這個我覺得更接近你所需要的。
我已經確信,我將在這兩個datetime對象特定的時區,這樣就不會有混亂
這也考慮到了可能,市場可能已經打開,並告訴你多久關閉時間。
它也在所有情況下使用今天的日期,所以任何夏令時都應該處理。
當前還有一個時間設置器,因此您可以查看一天中不同時間發生的情況,請參閱$now->setTime(10, 30, 0);
設置一天中的特定時間。
<?php
$now = new DateTime();
$now->setTimezone(new DateTimeZone('America/New_York'));
// To test what happens at different times of the current day
// Set a specific time for the NOW DateTIme
$now->setTime(10, 30, 0);
echo 'Now = ' . $now->format('d/m/Y H:i:s').PHP_EOL;
$opens = new DateTime();
$opens->setTimezone(new DateTimeZone('America/New_York'));
$opens->setTime(9, 30, 0);
echo 'Opens = ' . $opens->format('d/m/Y H:i:s').PHP_EOL;
$interval = $now->diff($opens);
// if invert == 1 its a minus difference so market is open
if ($interval->invert == 1){
// Its already open
echo $interval->format("Market has been open for: %h hours, %i minutes, %s seconds").PHP_EOL;
// When will it close
$close = new DateTime();
$close->setTimezone(new DateTimeZone('America/New_York'));
$close->setTime(3, 30, 0);
$interval = $now->diff($close);
echo $interval->format("Market closes in: %h hours, %i minutes, %s seconds").PHP_EOL;
} else {
// it will open in
echo $interval->format("Market opens in: %h hours, %i minutes, %s seconds").PHP_EOL;
}
閱讀[此](http://stackoverflow.com/questions/38327793/how-can-i-insert-real-time-of-an-event-into-database-using-php-mysqli )我希望它對你有用 –
以上只是一個例子嗎?美國觀察DST,如果您在五月份使用固定的日期,那麼它將會打破半年。 – bcmcfc
該代碼的錯誤超出了您的想象 – RiggsFolly