• Jungshik Shin's avatar
    Implement a new spec for timezone offset calculation · dbdede01
    Jungshik Shin authored
    https://github.com/tc39/ecma262/pull/778 was recently merged
    to Ecma 262.
    
    It changes the way to convert between "local time" and UTC in such
    a way that it'd work for all timezones whether or not there has
    been any change in the timezone offset of the standard time. For
    instance, Europe/Moscow and some parts of US state of Indiana have
    changed the standard (non-DST) timezone offset a few times. The
    previous spec assumes that the the standard timezone offset is
    constant, but the new spec take into account the offset change
    history.
    
    In addition, it specifies a new way to calculate the timezone
    offset during a timezone transition (either in and
    out of DST or timezone offset shift).
    
    During a negative transition (e.g.  fall backward / getting
    out of DST), repeated times are to be interpreted as if the
    offset before the transition is in effect.
    
    During a positive transition (e.g. spring forward / getting
    into DST), skipped times are to be treated similarly. That
    is, they are to be interpreted as if the offset before the
    transition is in effect.
    
    With icu-timezone-data, v8 is compliant to the new spec for the
    past and the future as well as now whether or not the standard
    timezone offset of a given timezone has changed over time
    (e.g. Europe/Moscow, Pacific/Apia). With icu-timezone-data,
    Australia/Lord_Howe (30 minute DST change) also works per spec.
    
    Without icu-timezone-data, it works only for timezones of which
    the standard timezone offset is the same as the current offset
    (e.g. most North American timezones other than parts of Indiana)
    and of which the DST shift is an hour. For instance, it doesn't work
    for Europe/Moscow in 2010 when the standard timezone offset was
    +4h because the current (2018) standard timezone offset is +3h. Neither
    does it for Lord Howe in Australia with the DST shift of 0.5 hr.
    
    This CL used to require one of the two ICU CLs below, but not
    any more.
    
      https://chromium-review.googlesource.com/c/chromium/deps/icu/+/572652
      https://chromium-review.googlesource.com/851265  (a proposed CL to the
      upstream ICU).
    
    Bug: v8:3547,chromium:417640,v8:5714
    Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
    Change-Id: Ib162295da5bee31b2390bd0918157014aebd3e33
    Reviewed-on: https://chromium-review.googlesource.com/572148
    Commit-Queue: Jungshik Shin <jshin@chromium.org>
    Reviewed-by: 's avatarDaniel Ehrenberg <littledan@chromium.org>
    Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#52332}
    dbdede01
date.cc 14.6 KB