我正在使用PHP日期和时间函数来创建我自己的日期计算器之间的时间并遇到了strtotime()函数的问题。
使用手动输入的日期和时间时,计算以下之间的差异:
20-02-1986 12:00:00和04-01-2014 19:31:13
返回看似正确的差异,第一次使用strtotime()转换,第二次使用time()转换。
但是,如果其中一个时间是在EDT中而另一个时间在EST中,那么strtotime()函数似乎会增加一个小时,就像其中一个时间“退回”到EST一样。
17-09-1986 12:00:00和04-01-2014 19:37:03
根据timeanddate.com,两个日期之间的差异应该是:
861,521,823秒
但是下面的代码产生了这个:
861,525,423秒
还有3,600秒(1小时)。在17-09-1986 12:00:00使用strtotime()时,PHP似乎正在使用17-09-1986 11:00:00。
<?php
date_default_timezone_set('America/New_York');
$today = time();
$pastDate = '17-09-1986 12:00:00';
$pastDate = strtotime($pastDate);
$timeAlive = $today - $pastDate;
?>
答案 0 :(得分:0)
您应该将这两个日期转换为GMT,这样您就可以正确地完成差异。 PHP检测到两个时间都在同一时区,所以它只是进行数学计算,而忽略了时区的变化。首先转换应该摆脱这个问题。