PHP字符串,用于将时间缩短一小时

PHP字符串,用于将时间缩短一小时,php,datetime,Php,Datetime,我正在使用PHP日期和时间函数创建自己的日期间时间计算器,但遇到了strotime()函数的问题 使用手动输入的日期和时间时,计算以下两者之间的差异: 20-02-1986 12:00:00和04-01-2014 19:31:13 返回看起来正确的差异,第一次使用strotime()转换,第二次使用time()检索 但是,如果其中一个时间在EDT中,而另一个时间在EST中,则strotTime()函数似乎会增加一个小时,就好像其中一个时间“向后”到EST一样 1986年9月17日12:00:00

我正在使用PHP日期和时间函数创建自己的日期间时间计算器,但遇到了strotime()函数的问题

使用手动输入的日期和时间时,计算以下两者之间的差异:

20-02-1986 12:00:00和04-01-2014 19:31:13

返回看起来正确的差异,第一次使用strotime()转换,第二次使用time()检索

但是,如果其中一个时间在EDT中,而另一个时间在EST中,则strotTime()函数似乎会增加一个小时,就好像其中一个时间“向后”到EST一样

1986年9月17日12:00:00和2014年1月4日19:37:03

根据timeanddate.com,两个日期之间的差异应为:

861521823秒

但我的以下代码产生了这一点:

861525423秒

还有3600秒(1小时)。当在17-09-1986 12:00:00使用strotime()时,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;

?>


您应该将这两个日期都转换为GMT,这样您就可以正确地处理差异。PHP检测到这两个时间都在同一时区,所以它只进行计算,而不考虑时区的变化。转换第一个应该可以解决这个问题。

您能提供一个不使用“now”的示例并告诉我们预期结果吗?完成,添加了精确的第二个表示。