PHP String to Time off一小时

时间:2014-01-04 23:33:25

标签: php datetime

我正在使用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;

?>

1 个答案:

答案 0 :(得分:0)

您应该将这两个日期转换为GMT,这样您就可以正确地完成差异。 PHP检测到两个时间都在同一时区,所以它只是进行数学计算,而忽略了时区的变化。首先转换应该摆脱这个问题。