我有一个来自数据库的Unix时间戳(不幸的是)在时区中有一些+3600或+7200,具体取决于它是否为DST。这在以前从来就不是问题,但我们的网站目前正在转向更多的国际受众,并且由于Javascript与所述时间戳的交互,我需要转换时间戳而没有任何偏移。
那么,如果只是一个Unix时间戳,我该如何在时间戳的那一刻得到时区的偏移?我正在浏览PHP文档,但是有很多日期/时间函数我有点迷失。
我正在使用PHP 5.2.3
答案 0 :(得分:4)
我再次回答自己的问题感到愚蠢,但我刚刚找到了gmstrftime
功能。它似乎完全符合我的要求。谢谢大家!
答案 1 :(得分:2)
在一般情况下,你不能这样做。 Unix时间戳只是自Unix纪元以来的秒数,并且不包含任何时间戳信息。
可能对您有用的一件事是确定在DST生效期间是否发生给定时间戳,然后相应地进行调整。然而,这种方法在边界附近会失败(因为在DST开始之后和紧接着DST之前的一小时内每个时间戳有2个含义)。
将来,您可能最好以UTC格式存储时间戳,以避免出现这种问题。
答案 2 :(得分:2)
如果您通过unix时间戳表示unix时间(自Epoch以来的秒数),则偏移量始终为0. Epoch定义为1970年1月1日00:00:00 UTC。请注意UTC,其偏移量为0.
时区偏移和dst的应用由将unix时间戳转换为日期/时间结构的库处理。 (我不知道php,但是在C中,localtime函数采用unix时间戳,从环境或/ etc / localtime文件应用时区信息,并吐出一个秒,分钟,小时等结构)。
答案 3 :(得分:1)
答案 4 :(得分:0)