PHP提供了非常豐富的功能集與日期和時間,請參閱http://php.net/manual/en/book.datetime.php
在這種情況下,DateTime
,DateInterval
和DatePeriod
類都非常有用:
<?php
$interval = DateInterval::createFromDateString('15 minutes');
$begin = new DateTime('2017-08-23T1:00:00-05:00');
$end = new DateTime('2017-08-23T5:00:00-05:00');
// DatePeriod won't include the final period by default, so increment the end-time by our interval
$end->add($interval);
// Convert into array to make it easier to work with two elements at the same time
$periods = iterator_to_array(new DatePeriod($begin, $interval, $end));
$start = array_shift($periods);
foreach ($periods as $time) {
echo $start->format('H:iA'), ' - ', $time->format('H:iA'), PHP_EOL;
$start = $time;
}
DatePeriod
工具PHP的Traversable接口,這意味着你可以像數組一樣循環它(或者只是將它轉換爲一個,在這種情況下)。
第一個時間間隔重複,最後一個時間間隔丟失。 上午01:00 - 凌晨01:00 上午01:00 - 上午01點15分 上午01點15分 - 凌晨01:30 凌晨01:30 - 上午01時45 上午01時45分 - 上午02時00分 上午02時00分 - 凌晨02:15 02 :15AM - 凌晨02:30 凌晨02:30 - 上午02點45分 上午02點45分 - 上午03時00 上午03時00分 - 上午03時15分 上午03時15分 - 上午03點30 上午03點30 - 上午03時45 上午03時45分 - 04:00 AM 04:00 AM - 04:15 AM 04:15 AM - 04:30 AM 04:30 AM - 04:45 AM –
此外,我們給了-05:00時區,爲什麼它沒有被考慮?你知道嗎? 結果將是:08:00 - 08:15 08:15 - 08:30 08:30 - 08:45 08:45 - 09:00 09:00 - 09:15 09:15 - 09:30 09:30 - 09:45 09:45 - 10:00 10:00 - 10:15 10:15 - 10:30 10:30 - 10:45 10:45 - 11: 00 11:00 - 11:15 11:15 - 11:30 11:30 - 11:45 11:45 - 12:00 –
@PratikKamani我爲您的第一條評論添加了修復程序。你沒有提到在不同的時區顯示輸出,但是如果你想要輸入** UTC **,那麼你應該可以通過調用'setTimeZone(new DateTimeZone('UTC'))'來實現這一點。 'DateTime'對象。 – iainn