Unix 时间戳转换回夏令时

Unix Timestamp Conversion Back To Daylight Saving

看来我周一早上有一个案子!!!

设置

如您所知,我的本地计算机处于东部时区,夏令时有效。这可以从下面的 'date' 命令中看出。

date ; php -r 'echo mktime() .PHP_EOL ;'
Mon Apr 18 11:14:29 EDT 2016
1460992469

然后我使用 php 生成了一个 unix 时间戳。假设提供您当前的时间并将其转换为 1970 年 1 月 1 日 UTC 0:0:0 的 Unix 纪元。

我的 mysql 会话设置为 UTC,我想象 1460992469 代表它被 mktime 转换为 UTC。

问题

问题是转换回 est 不识别夏令时。任何人都可以帮助指出我逻辑中的缺陷。

SELECT CONVERT_TZ(FROM_UNIXTIME(1460992469), @@session.time_zone ,'EST') as converted_to_est , FROM_UNIXTIME(1460992469) , @@session.time_zone;
+---------------------+---------------------------+---------------------+
| converted_to_est    | FROM_UNIXTIME(1460992469) | @@session.time_zone |
+---------------------+---------------------------+---------------------+
| 2016-04-18 10:14:29 | 2016-04-18 15:14:29       | UTC                 |
+---------------------+---------------------------+---------------------+

我尝试在 CONVERT_TZ 中使用 'EDT' 已经无济于事了。

不要使用 'EST'。使用 'America/New_York'(假设美国)。