Bug #16286
closedDateTime.parse timezone errors
Description
Trying to parse a DateTime using Australian time zone abbreviations doesn't work:
>> DateTime.parse('2019-10-31 10:49:52.36400 AEST')
=> #<DateTime: 2019-10-31T10:49:52+00:00 ((2458788j,38992s,364000000n),+0s,2299161j)>
# offset is +00:00 not +10:00 ^^^^^^
As per this comment on a Rails issue, timezones are listed in ext/date/zonetab.list. Should these abbreviations be correct or are they deprecated?
Steps to reproduce:
>> require 'date'
=> true
>> DateTime.parse('2019-10-31 10:49:52.36400 AEST').zone
=> +00:00 # expected +10:00
>> DateTime.parse('2019-10-31 10:49:52.36400 AEDT').zone
=> +00:00 # expected +11:00
>> DateTime.parse('2019-10-31 10:49:52.36400 EAST').zone
=> +10:00 # expected -06:00
>> DateTime.parse('2019-10-31 10:49:52.36400 EASST').zone
=> +00:00 # expected -05:00
Additional info:
ext/date/zonetab.list lists "EAST" with an offset of +10. EAST is the abbreviation for Easter Island, not for Australia Eastern Standard Time.
References:
- the most recent data from IANA (2019c at time of writing) refers to the timezones as AEST (or AEDT for DST)
- the Australian government uses AEST (or AEDT for DST)
- EAST isn't referenced by IANA but there are several sources that use EAST for Easter Island, off the coast of Chile (-6 rather than +10).
Files
Updated by shyouhei (Shyouhei Urabe) over 5 years ago
Curious where were those abbreviation from. According to git log -G
, It was introduced in this commit https://github.com/ruby/ruby/commit/dc9cd6a8c22ad04baa7498fd0cbc5d519ed73be0 but no description came with it.
Maybe it's better to follow authoritative information such as tzdata.
Updated by jeremyevans0 (Jeremy Evans) over 5 years ago
shyouhei (Shyouhei Urabe) wrote:
Curious where were those abbreviation from. According to
git log -G
, It was introduced in this commit https://github.com/ruby/ruby/commit/dc9cd6a8c22ad04baa7498fd0cbc5d519ed73be0 but no description came with it.Maybe it's better to follow authoritative information such as tzdata.
I agree. Not having much experience with the tz database, I'm not sure how to easily get abbreviation info out of it. The tzinfo gem doesn't appear to expose a list of all abbreviations, though recent versions do allow getting current abbreviations for particular timezones. It is hard to use that feature to add missing timezones, though.
I did find an alternative source for timezone abbreviations that was easier to deal with: https://www.timeanddate.com/time/zones/. Not sure how authoritative it is, but it seems reasonable. It does include AEST, AEDT, and EASST. For backwards compatibility, we shouldn't change EAST. I've submitted a pull request to add new unambiguous time zones listed on that site: https://github.com/ruby/date/pull/16
Updated by jeremyevans0 (Jeremy Evans) over 5 years ago
- Status changed from Open to Closed