Chronos is one of the many Smalltalk-related blogs syndicated on Planet Smalltalk
χρόνος

Discussion of the Essence# programming language, and related issues and technologies.

Blog Timezone: America/Los_Angeles [Winter: -0800 hhmm | Summer: -0700 hhmm] 
Your local time:  

2007-02-07

When's the next (or previous) DST offset transition?

How can you tell programmatically when the next (or previous) DST (daylight saving time) offset transition will occur (has occurred)--other than by using a brute-force approach where one checks the offset of successive points in time, each one second later than the previous one? Few date/time libraries provide any support for such functionality (and many don't even provide support for real-world time zones where offsets change during the year according to a set of rules.)

Although it's possible to use Chronos to discover all the moments when a time zone's offset, name or abbreviation changes (and not just by the brute-force method mentioned above,) the bad news is that for a developer who casually uses Chronos to figure out how to code that functionality would probably require not only a bit of research, but also the writing of some non-trivial amount of new code.

So, the next release of Chronos (which is not yet available) will provide a simple, easy-to-use API for enumerating through all the moments when a time zone's offset changes, so that developers who use Chronos won't have to do as much research, and won't have to write anywhere near as much new new code, in order to find the next (or previous) offset transition for a time zone. Using this new API, the following list of every offset transition in the America/Los_Angeles time zone, from the very first one in 1883 until the arbitrarily chosen end-year of 2050, can easily be generated:

1883-11-18T12:00:00-08:00  [1883-11-18T20:00:00Z] -07:52:58 -> -08:00  {-2717640000}
1918-03-31T03:00:00-07:00 [1918-03-31T10:00:00Z] -08:00 -> -07:00 {-1633269600}
1918-10-27T01:00:00-08:00 [1918-10-27T09:00:00Z] -07:00 -> -08:00 {-1615129200}
1919-03-30T03:00:00-07:00 [1919-03-30T10:00:00Z] -08:00 -> -07:00 {-1601820000}
1919-10-26T01:00:00-08:00 [1919-10-26T09:00:00Z] -07:00 -> -08:00 {-1583679600}
1942-02-09T03:00:00-07:00 [1942-02-09T10:00:00Z] -08:00 -> -07:00 {-880207200}
1945-08-14T16:00:00-07:00 [1945-08-14T23:00:00Z] -07:00 -> -07:00 {-769395600}
1945-09-30T01:00:00-08:00 [1945-09-30T09:00:00Z] -07:00 -> -08:00 {-765385200}
1948-03-14T03:00:00-07:00 [1948-03-14T10:00:00Z] -08:00 -> -07:00 {-687967200}
1949-01-01T01:00:00-08:00 [1949-01-01T09:00:00Z] -07:00 -> -08:00 {-662655600}
1950-04-30T03:00:00-07:00 [1950-04-30T10:00:00Z] -08:00 -> -07:00 {-620834400}
1950-09-24T01:00:00-08:00 [1950-09-24T09:00:00Z] -07:00 -> -08:00 {-608137200}
1951-04-29T03:00:00-07:00 [1951-04-29T10:00:00Z] -08:00 -> -07:00 {-589384800}
1951-09-30T01:00:00-08:00 [1951-09-30T09:00:00Z] -07:00 -> -08:00 {-576082800}
1952-04-27T03:00:00-07:00 [1952-04-27T10:00:00Z] -08:00 -> -07:00 {-557935200}
1952-09-28T01:00:00-08:00 [1952-09-28T09:00:00Z] -07:00 -> -08:00 {-544633200}
1953-04-26T03:00:00-07:00 [1953-04-26T10:00:00Z] -08:00 -> -07:00 {-526485600}
1953-09-27T01:00:00-08:00 [1953-09-27T09:00:00Z] -07:00 -> -08:00 {-513183600}
1954-04-25T03:00:00-07:00 [1954-04-25T10:00:00Z] -08:00 -> -07:00 {-495036000}
1954-09-26T01:00:00-08:00 [1954-09-26T09:00:00Z] -07:00 -> -08:00 {-481734000}
1955-04-24T03:00:00-07:00 [1955-04-24T10:00:00Z] -08:00 -> -07:00 {-463586400}
1955-09-25T01:00:00-08:00 [1955-09-25T09:00:00Z] -07:00 -> -08:00 {-450284400}
1956-04-29T03:00:00-07:00 [1956-04-29T10:00:00Z] -08:00 -> -07:00 {-431532000}
1956-09-30T01:00:00-08:00 [1956-09-30T09:00:00Z] -07:00 -> -08:00 {-418230000}
1957-04-28T03:00:00-07:00 [1957-04-28T10:00:00Z] -08:00 -> -07:00 {-400082400}
1957-09-29T01:00:00-08:00 [1957-09-29T09:00:00Z] -07:00 -> -08:00 {-386780400}
1958-04-27T03:00:00-07:00 [1958-04-27T10:00:00Z] -08:00 -> -07:00 {-368632800}
1958-09-28T01:00:00-08:00 [1958-09-28T09:00:00Z] -07:00 -> -08:00 {-355330800}
1959-04-26T03:00:00-07:00 [1959-04-26T10:00:00Z] -08:00 -> -07:00 {-337183200}
1959-09-27T01:00:00-08:00 [1959-09-27T09:00:00Z] -07:00 -> -08:00 {-323881200}
1960-04-24T03:00:00-07:00 [1960-04-24T10:00:00Z] -08:00 -> -07:00 {-305733600}
1960-09-25T01:00:00-08:00 [1960-09-25T09:00:00Z] -07:00 -> -08:00 {-292431600}
1961-04-30T03:00:00-07:00 [1961-04-30T10:00:00Z] -08:00 -> -07:00 {-273679200}
1961-09-24T01:00:00-08:00 [1961-09-24T09:00:00Z] -07:00 -> -08:00 {-260982000}
1962-04-29T03:00:00-07:00 [1962-04-29T10:00:00Z] -08:00 -> -07:00 {-242229600}
1962-10-28T01:00:00-08:00 [1962-10-28T09:00:00Z] -07:00 -> -08:00 {-226508400}
1963-04-28T03:00:00-07:00 [1963-04-28T10:00:00Z] -08:00 -> -07:00 {-210780000}
1963-10-27T01:00:00-08:00 [1963-10-27T09:00:00Z] -07:00 -> -08:00 {-195058800}
1964-04-26T03:00:00-07:00 [1964-04-26T10:00:00Z] -08:00 -> -07:00 {-179330400}
1964-10-25T01:00:00-08:00 [1964-10-25T09:00:00Z] -07:00 -> -08:00 {-163609200}
1965-04-25T03:00:00-07:00 [1965-04-25T10:00:00Z] -08:00 -> -07:00 {-147880800}
1965-10-31T01:00:00-08:00 [1965-10-31T09:00:00Z] -07:00 -> -08:00 {-131554800}
1966-04-24T03:00:00-07:00 [1966-04-24T10:00:00Z] -08:00 -> -07:00 {-116431200}
1966-10-30T01:00:00-08:00 [1966-10-30T09:00:00Z] -07:00 -> -08:00 {-100105200}
1967-04-30T03:00:00-07:00 [1967-04-30T10:00:00Z] -08:00 -> -07:00 {-84376800}
1967-10-29T01:00:00-08:00 [1967-10-29T09:00:00Z] -07:00 -> -08:00 {-68655600}
1968-04-28T03:00:00-07:00 [1968-04-28T10:00:00Z] -08:00 -> -07:00 {-52927200}
1968-10-27T01:00:00-08:00 [1968-10-27T09:00:00Z] -07:00 -> -08:00 {-37206000}
1969-04-27T03:00:00-07:00 [1969-04-27T10:00:00Z] -08:00 -> -07:00 {-21477600}
1969-10-26T01:00:00-08:00 [1969-10-26T09:00:00Z] -07:00 -> -08:00 {-5756400}
1970-04-26T03:00:00-07:00 [1970-04-26T10:00:00Z] -08:00 -> -07:00 {9972000}
1970-10-25T01:00:00-08:00 [1970-10-25T09:00:00Z] -07:00 -> -08:00 {25693200}
1971-04-25T03:00:00-07:00 [1971-04-25T10:00:00Z] -08:00 -> -07:00 {41421600}
1971-10-31T01:00:00-08:00 [1971-10-31T09:00:00Z] -07:00 -> -08:00 {57747600}
1972-04-30T03:00:00-07:00 [1972-04-30T10:00:00Z] -08:00 -> -07:00 {73476000}
1972-10-29T01:00:00-08:00 [1972-10-29T09:00:00Z] -07:00 -> -08:00 {89197200}
1973-04-29T03:00:00-07:00 [1973-04-29T10:00:00Z] -08:00 -> -07:00 {104925600}
1973-10-28T01:00:00-08:00 [1973-10-28T09:00:00Z] -07:00 -> -08:00 {120646800}
1974-01-06T03:00:00-07:00 [1974-01-06T10:00:00Z] -08:00 -> -07:00 {126698400}
1974-10-27T01:00:00-08:00 [1974-10-27T09:00:00Z] -07:00 -> -08:00 {152096400}
1975-02-23T03:00:00-07:00 [1975-02-23T10:00:00Z] -08:00 -> -07:00 {162381600}
1975-10-26T01:00:00-08:00 [1975-10-26T09:00:00Z] -07:00 -> -08:00 {183546000}
1976-04-25T03:00:00-07:00 [1976-04-25T10:00:00Z] -08:00 -> -07:00 {199274400}
1976-10-31T01:00:00-08:00 [1976-10-31T09:00:00Z] -07:00 -> -08:00 {215600400}
1977-04-24T03:00:00-07:00 [1977-04-24T10:00:00Z] -08:00 -> -07:00 {230724000}
1977-10-30T01:00:00-08:00 [1977-10-30T09:00:00Z] -07:00 -> -08:00 {247050000}
1978-04-30T03:00:00-07:00 [1978-04-30T10:00:00Z] -08:00 -> -07:00 {262778400}
1978-10-29T01:00:00-08:00 [1978-10-29T09:00:00Z] -07:00 -> -08:00 {278499600}
1979-04-29T03:00:00-07:00 [1979-04-29T10:00:00Z] -08:00 -> -07:00 {294228000}
1979-10-28T01:00:00-08:00 [1979-10-28T09:00:00Z] -07:00 -> -08:00 {309949200}
1980-04-27T03:00:00-07:00 [1980-04-27T10:00:00Z] -08:00 -> -07:00 {325677600}
1980-10-26T01:00:00-08:00 [1980-10-26T09:00:00Z] -07:00 -> -08:00 {341398800}
1981-04-26T03:00:00-07:00 [1981-04-26T10:00:00Z] -08:00 -> -07:00 {357127200}
1981-10-25T01:00:00-08:00 [1981-10-25T09:00:00Z] -07:00 -> -08:00 {372848400}
1982-04-25T03:00:00-07:00 [1982-04-25T10:00:00Z] -08:00 -> -07:00 {388576800}
1982-10-31T01:00:00-08:00 [1982-10-31T09:00:00Z] -07:00 -> -08:00 {404902800}
1983-04-24T03:00:00-07:00 [1983-04-24T10:00:00Z] -08:00 -> -07:00 {420026400}
1983-10-30T01:00:00-08:00 [1983-10-30T09:00:00Z] -07:00 -> -08:00 {436352400}
1984-04-29T03:00:00-07:00 [1984-04-29T10:00:00Z] -08:00 -> -07:00 {452080800}
1984-10-28T01:00:00-08:00 [1984-10-28T09:00:00Z] -07:00 -> -08:00 {467802000}
1985-04-28T03:00:00-07:00 [1985-04-28T10:00:00Z] -08:00 -> -07:00 {483530400}
1985-10-27T01:00:00-08:00 [1985-10-27T09:00:00Z] -07:00 -> -08:00 {499251600}
1986-04-27T03:00:00-07:00 [1986-04-27T10:00:00Z] -08:00 -> -07:00 {514980000}
1986-10-26T01:00:00-08:00 [1986-10-26T09:00:00Z] -07:00 -> -08:00 {530701200}
1987-04-05T03:00:00-07:00 [1987-04-05T10:00:00Z] -08:00 -> -07:00 {544615200}
1987-10-25T01:00:00-08:00 [1987-10-25T09:00:00Z] -07:00 -> -08:00 {562150800}
1988-04-03T03:00:00-07:00 [1988-04-03T10:00:00Z] -08:00 -> -07:00 {576064800}
1988-10-30T01:00:00-08:00 [1988-10-30T09:00:00Z] -07:00 -> -08:00 {594205200}
1989-04-02T03:00:00-07:00 [1989-04-02T10:00:00Z] -08:00 -> -07:00 {607514400}
1989-10-29T01:00:00-08:00 [1989-10-29T09:00:00Z] -07:00 -> -08:00 {625654800}
1990-04-01T03:00:00-07:00 [1990-04-01T10:00:00Z] -08:00 -> -07:00 {638964000}
1990-10-28T01:00:00-08:00 [1990-10-28T09:00:00Z] -07:00 -> -08:00 {657104400}
1991-04-07T03:00:00-07:00 [1991-04-07T10:00:00Z] -08:00 -> -07:00 {671018400}
1991-10-27T01:00:00-08:00 [1991-10-27T09:00:00Z] -07:00 -> -08:00 {688554000}
1992-04-05T03:00:00-07:00 [1992-04-05T10:00:00Z] -08:00 -> -07:00 {702468000}
1992-10-25T01:00:00-08:00 [1992-10-25T09:00:00Z] -07:00 -> -08:00 {720003600}
1993-04-04T03:00:00-07:00 [1993-04-04T10:00:00Z] -08:00 -> -07:00 {733917600}
1993-10-31T01:00:00-08:00 [1993-10-31T09:00:00Z] -07:00 -> -08:00 {752058000}
1994-04-03T03:00:00-07:00 [1994-04-03T10:00:00Z] -08:00 -> -07:00 {765367200}
1994-10-30T01:00:00-08:00 [1994-10-30T09:00:00Z] -07:00 -> -08:00 {783507600}
1995-04-02T03:00:00-07:00 [1995-04-02T10:00:00Z] -08:00 -> -07:00 {796816800}
1995-10-29T01:00:00-08:00 [1995-10-29T09:00:00Z] -07:00 -> -08:00 {814957200}
1996-04-07T03:00:00-07:00 [1996-04-07T10:00:00Z] -08:00 -> -07:00 {828871200}
1996-10-27T01:00:00-08:00 [1996-10-27T09:00:00Z] -07:00 -> -08:00 {846406800}
1997-04-06T03:00:00-07:00 [1997-04-06T10:00:00Z] -08:00 -> -07:00 {860320800}
1997-10-26T01:00:00-08:00 [1997-10-26T09:00:00Z] -07:00 -> -08:00 {877856400}
1998-04-05T03:00:00-07:00 [1998-04-05T10:00:00Z] -08:00 -> -07:00 {891770400}
1998-10-25T01:00:00-08:00 [1998-10-25T09:00:00Z] -07:00 -> -08:00 {909306000}
1999-04-04T03:00:00-07:00 [1999-04-04T10:00:00Z] -08:00 -> -07:00 {923220000}
1999-10-31T01:00:00-08:00 [1999-10-31T09:00:00Z] -07:00 -> -08:00 {941360400}
2000-04-02T03:00:00-07:00 [2000-04-02T10:00:00Z] -08:00 -> -07:00 {954669600}
2000-10-29T01:00:00-08:00 [2000-10-29T09:00:00Z] -07:00 -> -08:00 {972810000}
2001-04-01T03:00:00-07:00 [2001-04-01T10:00:00Z] -08:00 -> -07:00 {986119200}
2001-10-28T01:00:00-08:00 [2001-10-28T09:00:00Z] -07:00 -> -08:00 {1004259600}
2002-04-07T03:00:00-07:00 [2002-04-07T10:00:00Z] -08:00 -> -07:00 {1018173600}
2002-10-27T01:00:00-08:00 [2002-10-27T09:00:00Z] -07:00 -> -08:00 {1035709200}
2003-04-06T03:00:00-07:00 [2003-04-06T10:00:00Z] -08:00 -> -07:00 {1049623200}
2003-10-26T01:00:00-08:00 [2003-10-26T09:00:00Z] -07:00 -> -08:00 {1067158800}
2004-04-04T03:00:00-07:00 [2004-04-04T10:00:00Z] -08:00 -> -07:00 {1081072800}
2004-10-31T01:00:00-08:00 [2004-10-31T09:00:00Z] -07:00 -> -08:00 {1099213200}
2005-04-03T03:00:00-07:00 [2005-04-03T10:00:00Z] -08:00 -> -07:00 {1112522400}
2005-10-30T01:00:00-08:00 [2005-10-30T09:00:00Z] -07:00 -> -08:00 {1130662800}
2006-04-02T03:00:00-07:00 [2006-04-02T10:00:00Z] -08:00 -> -07:00 {1143972000}
2006-10-29T01:00:00-08:00 [2006-10-29T09:00:00Z] -07:00 -> -08:00 {1162112400}
2007-03-11T03:00:00-07:00 [2007-03-11T10:00:00Z] -08:00 -> -07:00 {1173607200}
2007-11-04T01:00:00-08:00 [2007-11-04T09:00:00Z] -07:00 -> -08:00 {1194166800}
2008-03-09T03:00:00-07:00 [2008-03-09T10:00:00Z] -08:00 -> -07:00 {1205056800}
2008-11-02T01:00:00-08:00 [2008-11-02T09:00:00Z] -07:00 -> -08:00 {1225616400}
2009-03-08T03:00:00-07:00 [2009-03-08T10:00:00Z] -08:00 -> -07:00 {1236506400}
2009-11-01T01:00:00-08:00 [2009-11-01T09:00:00Z] -07:00 -> -08:00 {1257066000}
2010-03-14T03:00:00-07:00 [2010-03-14T10:00:00Z] -08:00 -> -07:00 {1268560800}
2010-11-07T01:00:00-08:00 [2010-11-07T09:00:00Z] -07:00 -> -08:00 {1289120400}
2011-03-13T03:00:00-07:00 [2011-03-13T10:00:00Z] -08:00 -> -07:00 {1300010400}
2011-11-06T01:00:00-08:00 [2011-11-06T09:00:00Z] -07:00 -> -08:00 {1320570000}
2012-03-11T03:00:00-07:00 [2012-03-11T10:00:00Z] -08:00 -> -07:00 {1331460000}
2012-11-04T01:00:00-08:00 [2012-11-04T09:00:00Z] -07:00 -> -08:00 {1352019600}
2013-03-10T03:00:00-07:00 [2013-03-10T10:00:00Z] -08:00 -> -07:00 {1362909600}
2013-11-03T01:00:00-08:00 [2013-11-03T09:00:00Z] -07:00 -> -08:00 {1383469200}
2014-03-09T03:00:00-07:00 [2014-03-09T10:00:00Z] -08:00 -> -07:00 {1394359200}
2014-11-02T01:00:00-08:00 [2014-11-02T09:00:00Z] -07:00 -> -08:00 {1414918800}
2015-03-08T03:00:00-07:00 [2015-03-08T10:00:00Z] -08:00 -> -07:00 {1425808800}
2015-11-01T01:00:00-08:00 [2015-11-01T09:00:00Z] -07:00 -> -08:00 {1446368400}
2016-03-13T03:00:00-07:00 [2016-03-13T10:00:00Z] -08:00 -> -07:00 {1457863200}
2016-11-06T01:00:00-08:00 [2016-11-06T09:00:00Z] -07:00 -> -08:00 {1478422800}
2017-03-12T03:00:00-07:00 [2017-03-12T10:00:00Z] -08:00 -> -07:00 {1489312800}
2017-11-05T01:00:00-08:00 [2017-11-05T09:00:00Z] -07:00 -> -08:00 {1509872400}
2018-03-11T03:00:00-07:00 [2018-03-11T10:00:00Z] -08:00 -> -07:00 {1520762400}
2018-11-04T01:00:00-08:00 [2018-11-04T09:00:00Z] -07:00 -> -08:00 {1541322000}
2019-03-10T03:00:00-07:00 [2019-03-10T10:00:00Z] -08:00 -> -07:00 {1552212000}
2019-11-03T01:00:00-08:00 [2019-11-03T09:00:00Z] -07:00 -> -08:00 {1572771600}
2020-03-08T03:00:00-07:00 [2020-03-08T10:00:00Z] -08:00 -> -07:00 {1583661600}
2020-11-01T01:00:00-08:00 [2020-11-01T09:00:00Z] -07:00 -> -08:00 {1604221200}
2021-03-14T03:00:00-07:00 [2021-03-14T10:00:00Z] -08:00 -> -07:00 {1615716000}
2021-11-07T01:00:00-08:00 [2021-11-07T09:00:00Z] -07:00 -> -08:00 {1636275600}
2022-03-13T03:00:00-07:00 [2022-03-13T10:00:00Z] -08:00 -> -07:00 {1647165600}
2022-11-06T01:00:00-08:00 [2022-11-06T09:00:00Z] -07:00 -> -08:00 {1667725200}
2023-03-12T03:00:00-07:00 [2023-03-12T10:00:00Z] -08:00 -> -07:00 {1678615200}
2023-11-05T01:00:00-08:00 [2023-11-05T09:00:00Z] -07:00 -> -08:00 {1699174800}
2024-03-10T03:00:00-07:00 [2024-03-10T10:00:00Z] -08:00 -> -07:00 {1710064800}
2024-11-03T01:00:00-08:00 [2024-11-03T09:00:00Z] -07:00 -> -08:00 {1730624400}
2025-03-09T03:00:00-07:00 [2025-03-09T10:00:00Z] -08:00 -> -07:00 {1741514400}
2025-11-02T01:00:00-08:00 [2025-11-02T09:00:00Z] -07:00 -> -08:00 {1762074000}
2026-03-08T03:00:00-07:00 [2026-03-08T10:00:00Z] -08:00 -> -07:00 {1772964000}
2026-11-01T01:00:00-08:00 [2026-11-01T09:00:00Z] -07:00 -> -08:00 {1793523600}
2027-03-14T03:00:00-07:00 [2027-03-14T10:00:00Z] -08:00 -> -07:00 {1805018400}
2027-11-07T01:00:00-08:00 [2027-11-07T09:00:00Z] -07:00 -> -08:00 {1825578000}
2028-03-12T03:00:00-07:00 [2028-03-12T10:00:00Z] -08:00 -> -07:00 {1836468000}
2028-11-05T01:00:00-08:00 [2028-11-05T09:00:00Z] -07:00 -> -08:00 {1857027600}
2029-03-11T03:00:00-07:00 [2029-03-11T10:00:00Z] -08:00 -> -07:00 {1867917600}
2029-11-04T01:00:00-08:00 [2029-11-04T09:00:00Z] -07:00 -> -08:00 {1888477200}
2030-03-10T03:00:00-07:00 [2030-03-10T10:00:00Z] -08:00 -> -07:00 {1899367200}
2030-11-03T01:00:00-08:00 [2030-11-03T09:00:00Z] -07:00 -> -08:00 {1919926800}
2031-03-09T03:00:00-07:00 [2031-03-09T10:00:00Z] -08:00 -> -07:00 {1930816800}
2031-11-02T01:00:00-08:00 [2031-11-02T09:00:00Z] -07:00 -> -08:00 {1951376400}
2032-03-14T03:00:00-07:00 [2032-03-14T10:00:00Z] -08:00 -> -07:00 {1962871200}
2032-11-07T01:00:00-08:00 [2032-11-07T09:00:00Z] -07:00 -> -08:00 {1983430800}
2033-03-13T03:00:00-07:00 [2033-03-13T10:00:00Z] -08:00 -> -07:00 {1994320800}
2033-11-06T01:00:00-08:00 [2033-11-06T09:00:00Z] -07:00 -> -08:00 {2014880400}
2034-03-12T03:00:00-07:00 [2034-03-12T10:00:00Z] -08:00 -> -07:00 {2025770400}
2034-11-05T01:00:00-08:00 [2034-11-05T09:00:00Z] -07:00 -> -08:00 {2046330000}
2035-03-11T03:00:00-07:00 [2035-03-11T10:00:00Z] -08:00 -> -07:00 {2057220000}
2035-11-04T01:00:00-08:00 [2035-11-04T09:00:00Z] -07:00 -> -08:00 {2077779600}
2036-03-09T03:00:00-07:00 [2036-03-09T10:00:00Z] -08:00 -> -07:00 {2088669600}
2036-11-02T01:00:00-08:00 [2036-11-02T09:00:00Z] -07:00 -> -08:00 {2109229200}
2037-03-08T03:00:00-07:00 [2037-03-08T10:00:00Z] -08:00 -> -07:00 {2120119200}
2037-11-01T01:00:00-08:00 [2037-11-01T09:00:00Z] -07:00 -> -08:00 {2140678800}
2038-03-14T03:00:00-07:00 [2038-03-14T10:00:00Z] -08:00 -> -07:00 {2152173600}
2038-11-07T01:00:00-08:00 [2038-11-07T09:00:00Z] -07:00 -> -08:00 {2172733200}
2039-03-13T03:00:00-07:00 [2039-03-13T10:00:00Z] -08:00 -> -07:00 {2183623200}
2039-11-06T01:00:00-08:00 [2039-11-06T09:00:00Z] -07:00 -> -08:00 {2204182800}
2040-03-11T03:00:00-07:00 [2040-03-11T10:00:00Z] -08:00 -> -07:00 {2215072800}
2040-11-04T01:00:00-08:00 [2040-11-04T09:00:00Z] -07:00 -> -08:00 {2235632400}
2041-03-10T03:00:00-07:00 [2041-03-10T10:00:00Z] -08:00 -> -07:00 {2246522400}
2041-11-03T01:00:00-08:00 [2041-11-03T09:00:00Z] -07:00 -> -08:00 {2267082000}
2042-03-09T03:00:00-07:00 [2042-03-09T10:00:00Z] -08:00 -> -07:00 {2277972000}
2042-11-02T01:00:00-08:00 [2042-11-02T09:00:00Z] -07:00 -> -08:00 {2298531600}
2043-03-08T03:00:00-07:00 [2043-03-08T10:00:00Z] -08:00 -> -07:00 {2309421600}
2043-11-01T01:00:00-08:00 [2043-11-01T09:00:00Z] -07:00 -> -08:00 {2329981200}
2044-03-13T03:00:00-07:00 [2044-03-13T10:00:00Z] -08:00 -> -07:00 {2341476000}
2044-11-06T01:00:00-08:00 [2044-11-06T09:00:00Z] -07:00 -> -08:00 {2362035600}
2045-03-12T03:00:00-07:00 [2045-03-12T10:00:00Z] -08:00 -> -07:00 {2372925600}
2045-11-05T01:00:00-08:00 [2045-11-05T09:00:00Z] -07:00 -> -08:00 {2393485200}
2046-03-11T03:00:00-07:00 [2046-03-11T10:00:00Z] -08:00 -> -07:00 {2404375200}
2046-11-04T01:00:00-08:00 [2046-11-04T09:00:00Z] -07:00 -> -08:00 {2424934800}
2047-03-10T03:00:00-07:00 [2047-03-10T10:00:00Z] -08:00 -> -07:00 {2435824800}
2047-11-03T01:00:00-08:00 [2047-11-03T09:00:00Z] -07:00 -> -08:00 {2456384400}
2048-03-08T03:00:00-07:00 [2048-03-08T10:00:00Z] -08:00 -> -07:00 {2467274400}
2048-11-01T01:00:00-08:00 [2048-11-01T09:00:00Z] -07:00 -> -08:00 {2487834000}
2049-03-14T03:00:00-07:00 [2049-03-14T10:00:00Z] -08:00 -> -07:00 {2499328800}
2049-11-07T01:00:00-08:00 [2049-11-07T09:00:00Z] -07:00 -> -08:00 {2519888400}
2050-03-13T03:00:00-07:00 [2050-03-13T10:00:00Z] -08:00 -> -07:00 {2530778400}
2050-11-06T01:00:00-08:00 [2050-11-06T09:00:00Z] -07:00 -> -08:00 {2551338000}

Here's the Chronos code that generates the list of offset transitions:
  | transition prevOffset printPolicy |
printPolicy := ChronosPrintPolicy iso8601.
transition := Timepoint year: 1881 day: 1 timeZone: #'America/Los_Angeles'.
[prevOffset := transition offset.
transition := transition nextOffsetTransitionDateAndTimeIfNone: [].
transition == nil or: [transition year > 2050]]
whileFalse:
[Transcript
cr; show: transition printString;
tab; show: ' ['; show: transition asUT % printPolicy; show: ']';
tab; show: prevOffset timeZoneOffsetPrintString;
show: ' -> '; show: transition offset timeZoneOffsetPrintString;
tab; show: ' {';
show: (transition secondsSince: ChronosSystemClock unixEpoch) printString;
show: '}'].



No comments: