我想生成兩個日期之間的數組,間隔爲1小時。如何用php生成一個日期數組?
Inital date: 01-01-2013 00:00:00
Final date: 02-01-2013 00:00:00
ex。結果:
[01-01-2013 00:00:00, 01-01-2013 01:00:00, 01-01-2013 02:00:00, (...), 02-01-2013 00:00:00]
我想生成兩個日期之間的數組,間隔爲1小時。如何用php生成一個日期數組?
Inital date: 01-01-2013 00:00:00
Final date: 02-01-2013 00:00:00
ex。結果:
[01-01-2013 00:00:00, 01-01-2013 01:00:00, 01-01-2013 02:00:00, (...), 02-01-2013 00:00:00]
試試這個
$dates = array();
$start = strtotime('01-01-2013 00:00:00');
$end = strtotime('02-01-2013 00:00:00');
for($i=$start;$i<$end;$i+=3600) {
$dates[] = date('Y-m-d H:i:s',$i);
}
你不會更好使用'strtortime('+ 1小時')'每次增加3600到日期?由於'strtotime'出現在任何地方,我讀過推薦使用'date'。 – Styphon
它看起來很完美:)謝謝 – user1136575
你可以試試這個。
$start = mktime(0,0,0,1,1,2013);
$end = mktime(0,0,0,2,1,2013);
$inc = 60*60; // 1 hour
for ($x=$start; $x<=$end; $x+$inc) {
$dates = date('d-m-Y H:i:s, $x);
}
<?php
$start = '2013-01-01 00:00:00';
$end = '2013-01-02 00:00:00';
$dates = array();
$current = strtotime($start);
$offset = 0;
while ($current < strtotime($end)) {
$current = strtotime("$start +{$offset} hours");
$dates[] = date('d-m-Y H:i:s', $current);
$offset++;
}
print_r($dates);
$start = new DateTime('2013-07-01 00:00:00', new DateTimeZone('UTC'));
$interval = new DateInterval('PT1H');
$end = new DateTime('2013-07-03 00:00:00', new DateTimeZone('UTC'));
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $date) {
$dateArray[] = $date->format('Y-m-d h:i:s');
}
var_dump($dateArray);
恕我直言,這是正確的答案。當OP要求生成一個數組時,我稍微編輯了你的代碼。 +1。 – vascowhite
檢查這個http://stackoverflow.com/questions/4312439/php-return-all-dates-between-two-dates-in-an-array – Pradeeshnarayan
的可能重複[數組與日期之間兩個不同的日期](http://stackoverflow.com/questions/11451565/array-with-dates-between-two-different-dates) –