【发布时间】:2022-06-10 20:47:08
【问题描述】:
我发现某些日期(目前我只发现此错误与一些纪元之前的日期有关)与 UTC 相差一小时。
当地时间是 GMT-3
我第一次看到它是用 Javascript 编写的
> new Date("1969-07-26T03:00:00+00:00")
< Fri Jul 25 1969 23:00:00 GMT-0400 (-03) // why is it -0400?
> new Date("1963-07-26T03:00:00+00:00")
< Fri Jul 26 1963 00:00:00 GMT-0300 (-02)
然后我在 Ruby 中尝试了同样的事情
irb(main):288:0> Time.parse("1969-07-26T03:00:00+00:00").localtime
=> 1969-07-25 23:00:00 -0400
但是(也许我做错了)在 Python 中不会发生
In [12]: utc = datetime.fromisoformat("1969-07-26T03:00:00+00:00")
In [13]: utc.replace(tzinfo=tz.tzutc())
Out[13]: datetime.datetime(1969, 7, 26, 3, 0, tzinfo=tzutc())
In [14]: utc.astimezone(tz.tzlocal())
Out[14]: datetime.datetime(1969, 7, 26, 0, 0, tzinfo=tzlocal())
我无法找到有关它的信息。有什么要阅读的内容以及如何处理这些情况?例如 1963-07-26T03:00:00+00:00 按预期工作。
干杯!
【问题讨论】:
-
差异可能与夏令时法律的变化有关。
-
我不确定这是否是您的示例的原因,但 1969 年是英国全年保持 DST 的年份 - 参见例如 timeanddate.com/time/change/uk/…
-
嗨@AHaworth,这是有道理的,但
new Date("1969-12-26T03:00:00+00:00")按预期工作,显示Fri Dec 26 1969 00:00:00 GMT-0300 (-03)????。
标签: javascript python ruby date unix-timestamp