setTime返回错误的小时

时间:2013-08-12 18:28:03

标签: php

$hours = array();
$heures = Configuration::renvoyer_heures_debut_fin();
$arr_heures = explode('#',$heures->heures_debut_fin);
$start = new \DateTime($arr_heures[0].':00');
$end   = clone $start;
$end->setTime($arr_heures[1], 0);

如果$ end的值是17:45,我每次17:00获得

$ start的print_r(真值= 13:30)和$ end(真值= 17:45):

  

DateTime对象([date] => 2013-08-12 13:30:00 [timezone_type] => 3 [timezone] =>欧洲/柏林)DateTime对象([date] => 2013- 08-12 17:00:00 [timezone_type] => 3 [timezone] =>欧洲/柏林)

第二个DateTime应该是17:45而不是17:00

$ arr_heures的print_r是:

  

数组([0] => 13:30 [1] => 17:45)

PHP日志显示了这个错误:

  

第64行/Applications/MAMP/htdocs/imaginatiff/reservations/PHP/class/Calendrier.class.php中遇到的非格式良好的数值

第64行是$end->setTime($arr_heures[1], 0);

请问您有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您错误地使用setTime - 小时和分钟应该是单独的参数。

正确的是:

list ($h, $m) = explode(':', $arr_heures[1]);
$end->setTime($h, $m); // you can omit seconds when zero

当函数不能像你期望的那样工作时,阅读手册是一个好主意。