日期时区问题与夏令时



我有以下代码:

var_dump(new DateTime('now', new DateTimeZone('GMT')));

我得到以下输出,落后一小时:

object(DateTime)#894 (3) { ["date"]=> string(19) "2012-09-13 13:54:26" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "UTC" } 

但是,如果我将代码更改为以下内容:

var_dump(new DateTime('now', new DateTimeZone(date_default_timezone_get())));

然后我得到正确的输出:

object(DateTime)#894 (3) { ["date"]=> string(19) "2012-09-13 14:54:26" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/London" } 

我在 Derick Rethans 博客上读到,对于时区 3,它应该考虑到任何夏令时,谁能解释为什么在第一个代码片段上我比它实际是什么早一小时?!

好吧,在第一个片段中,您要求时区为"GMT"。这是一个有点模棱两可的术语,但我通常认为这完全意味着格林威治标准时间本身 - 大致相当于UTC,并且没有任何夏令时。这就是为什么它应用夏令时,而是将时区报告为 UTC。

欧洲/伦敦时区一年中有一半时间在格林威治标准时间,半年时间在英国夏令时。

我建议您尽可能避免使用3个字母的时区缩写。它们充满了各种失败的可能性。(现在阅读了博客文章,这基本上也是那里的建议。

相关内容

  • 没有找到相关文章

最新更新