Abu*_*kar 1 java timezone jodatime
我在浏览joda 网站的时区页面时发现了这个
-05:00 EST
-05:00 EST5EDT
-05:00 Etc/GMT+5
Run Code Online (Sandbox Code Playgroud)
我只是想知道这是什么EST5EDT意思,我通常使用EST所以只是想知道它。
在发布问题之前我已经搜索过并没有发现任何内容。
US/Eastern我遇到了、Americas/New_York、 和 的问题EST5EDT。这是我发现的。
对于《1966 年统一时间法案》于1967 年生效之后的日期,这些时区都是相同的。此外,美国在世界大战期间执行了标准 DST 规则,因此 1918-1919 年和 1942-1945 年它们都是相同的。
对于 1918 年之前、1920 年至 1941 年(含)以及 1946 年至 1966 年(含)之间的任何日期,EST5EDT始终与 相同EST。没有观察到夏令时。1883 年 11 月 18 日 12:03:58 之前的任何日期都将被视为时区 EST 存在。
1967 年之前,将提供纽约市观察到的Americas/New_York时间。因此,夏令时将遵循纽约市或纽约州政府制定的规则。1883 年 11 月 18 日 12:03:58 之前的任何日期都将采用当地时间,与 UTC 的偏移量为 -4:56:02。
下面是显示差异的 Ruby 片段:
# you may need to install the tzinfo gem with
# gem install tzinfo
require 'tzinfo'
# Using EST5EDT
# In 1966 DST is not observed.
Time.new(1966, 6, 1, 0, 0, 0, TZInfo::Timezone.get("EST5EDT"))
=> 1966-06-01 00:00:00 -0500
# DST is observed in 1967.
Time.new(1967, 6, 1, 0, 0, 0, TZInfo::Timezone.get("EST5EDT"))
=> 1967-06-01 00:00:00 -0400
# Now with America/New_York
# DST is observed in 1966
Time.new(1966, 6, 1, 0, 0, 0, TZInfo::Timezone.get("America/New_York"))
=> 1966-06-01 00:00:00 -0400
# DST is also observed in 1967
Time.new(1967, 6, 1, 0, 0, 0, TZInfo::Timezone.get("America/New_York"))
=> 1967-06-01 00:00:00 -0400
# America/New_York yields local time for pre-timezone dates.
Time.new(1867, 6, 1, 0, 0, 0, TZInfo::Timezone.get("America/New_York"))
=> 1867-06-01 00:00:00 -0456
# But EST5EDT retroactively applies timezones
Time.new(1867, 6, 1, 0, 0, 0, TZInfo::Timezone.get("EST5EDT"))
=> 1867-06-01 00:00:00 -0500
Run Code Online (Sandbox Code Playgroud)
EST5EDT如果您有多个系统,其中一个假设另一个假设Americas/New_York,特别是当系统将DATE字段存储为DATETIME将小时/分钟/秒设置为午夜的字段时,可能会发生奇怪的事情。对于最近的任何数据来说,数据可能看起来都不错。但例如,从 1966 年夏天开始的生日可能会移动一个小时,然后被截断,使其看起来是前一天。
如果您正在处理阿拉斯加的旧日期,为了额外的乐趣,您需要记住阿拉斯加是从俄罗斯购买的。1867 年 10 月 18 日之前的日期位于国际日期变更线的另一侧,并使用儒略历,而不是公历。例如,朱诺从 1867 年 10 月 6 日(儒略历)+15:02:19 变为 1867 年 10 月 18 日(公历)-8:57:41。(TZInfo 库不处理公历到儒略历的更改。)
require 'tzinfo'
Time.new(1867, 10, 18, 0, 0, 0, TZInfo::Timezone.get("America/Juneau"))
=> 1867-10-18 00:00:00 +1502
Time.new(1867, 10, 19, 0, 0, 0, TZInfo::Timezone.get("America/Juneau"))
#error message
TZInfo::AmbiguousTime (1867-10-19 00:00:00 is an ambiguous local time.)
Time.new(1867, 10, 20, 0, 0, 0, TZInfo::Timezone.get("America/Juneau"))
=> 1867-10-20 00:00:00 -0857
# The Ruby DateTime datatype handles Julian,
# so convert Time to DateTime then to julian
Time.new(1867, 10, 18, 0, 0, 0, TZInfo::Timezone.get("America/Juneau")).to_datetime.julian
=> 1867-10-06 00:00:00 +1502
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3124 次 |
| 最近记录: |