Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP DateTime diff创建带有负小时数的日期间隔_Php_Datetime_Dateinterval - Fatal编程技术网

PHP DateTime diff创建带有负小时数的日期间隔

PHP DateTime diff创建带有负小时数的日期间隔,php,datetime,dateinterval,Php,Datetime,Dateinterval,我最近发现了DateTime diff()的一个奇怪行为。 我只是试图计算以下日期之间的差异: $first = new DateTime('2016-07-05T00:00:00'); $second = new DateTime('2016-12-30T23:59:59'); $interval = $first->diff($second); echo $interval->h; 奇怪的是,这将输出: -1 这有点令人困惑,因为我认为DateInterval的公共属性是积极

我最近发现了DateTime diff()的一个奇怪行为。 我只是试图计算以下日期之间的差异:

$first = new DateTime('2016-07-05T00:00:00');
$second = new DateTime('2016-12-30T23:59:59');
$interval = $first->diff($second);
echo $interval->h;
奇怪的是,这将输出:

-1
这有点令人困惑,因为我认为DateInterval的公共属性是积极的。 现在,如果我试图自己创建这样一个日期间隔:

$interval = new DateInterval('P5M26DT-1H59M59S');
这将失败,因为小时内不允许出现负值


这种行为正常吗?如果是,我如何安全地将DateInterval转换为string/from string(例如,用于存储在DB中)?

您在该时间段内有夏时制转换,不是吗?是的,我认为这就是问题所在!如果第一个日期在夏令时内,则会出现问题。但是,PHP是否应该足够聪明,将日期的数量减少1,并将小时数增加24,这样我们就可以再次得到一个正小时数值?我猜如果天数值不是他们期望的值,会有更多的人抱怨,而不是如果小时数值是-1,那么你在Linux中得到这个结果了吗?谢谢你的回答。是的,我使用了Linux,但我认为这会发生在每个操作系统上。我想我知道为什么-1是必要的。看,你在那个时间段有一个夏令时轮班,不是吗?是的,我想这就是问题所在!如果第一个日期在夏令时内,则会出现问题。但是,PHP是否应该足够聪明,将日期的数量减少1,并将小时数增加24,这样我们就可以再次得到一个正小时数值?我猜如果天数值不是他们期望的值,会有更多的人抱怨,而不是如果小时数值是-1,那么你在Linux中得到这个结果了吗?谢谢你的回答。是的,我使用了Linux,但我认为这会发生在每个操作系统上。我想我知道为什么-1是必要的。看见