2016-06-09 38 views
-1

这里是我的代码(使用laravel)PHP日期时间和间隔意外的行为

$start = '05-01-2016'; 
$end = '05-03-2016'; 
$start_date = new Carbon; 
$end_date = new Carbon; 
$format = 'm-d-Y'; 
$begin = Carbon::createFromFormat($format, $start); 
$begin->setTime(0, 0, 0); 
$end = Carbon::createFromFormat($format, $end); 
$end->setTime(59, 59, 59); 
//dd($begin,$end); 
$interval = new \DateInterval('P1D'); 
$dateRange = new \DatePeriod($begin, $interval, $end); 
foreach ($dateRange as $date) { 
    $start_time = $start_date->setDateTime($date->format("Y"), $date->format("m"), $date->format("d"), 0, 0, 0)->toDateTimeString(); 
    $end_time =$end_date->setDateTime($date->format("Y"), $date->format("m"), $date->format("d"), 23, 59, 59)->toDateTimeString(); 
    var_dump($start_time); 
    //var_dump($end_time); 
} 

预计产出将是(ATLEAST我)

05-01-2016 
05-02-2016 

它实际上给了我

05-01-2016 
05-02-2016 
05-03-2016 
05-04-2016 
05-05-2016 

我无法理解它...任何帮助表示赞赏

这里输出 enter image description here

+0

是一个错误?否则,有人会回复我,直到现在 –

+0

谁投了票,值得一个solute,因为我值得这个..我花了一个小时,最后由下面的梦幻般的人的帮助弄清楚.. –

回答

1

你设置59小时:) - 这是两天以上。现在,你的最终日期时间是Thu, 05 May 2016 11:59:59

$end->setTime(59, 59, 59); 

设置23小时,将工作

$end->setTime(23, 59, 59); 
+0

该死的该死的该死的我.....我不会相信那是我......谢谢兄弟......我在墙上撞到了我的脑袋...... –

+0

这样的错误确实很难找到。需要一个新的看看:) – splash58

+0

你真的是正确的兄弟...它花了至少一个小时......我甚至开始怀疑,可能是它的一个错误......但错误在我的眼睛和代码...不是在DateTime或间隔:(无论如何,我真的欠这 –