Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Planned updates for new timezone databases? #321

Open
carlegbert opened this issue Nov 12, 2019 · 3 comments
Open

Planned updates for new timezone databases? #321

carlegbert opened this issue Nov 12, 2019 · 3 comments

Comments

@carlegbert
Copy link

Hi,
It looks like it's been a little while since you have updated this library. Do you plan to continue updating/maintaining it?

I made an attempt at updating the eggert dependency in order to pull in the 2019c release, but unfortunately ran into some build failures when running make- specifically, the script seems to go into an infinite loop somewhere in this function, when it reaches Asia/Hong_Kong. If you're able to provide some guidance on what might need to be updated to make the build work, I may be able to take a crack at submitting a patch.
Thank you!

@bigeasy
Copy link
Owner

bigeasy commented Nov 17, 2019

Yes. Sorry. Will update.

@detrout
Copy link

detrout commented Nov 22, 2019

I also stumbled on the bug. I rolled back the Asia/Hong_Kong timezone changes to match 2018i and it still hit the infinite loop. If I delete the Asia/Hong_Kong block it continues and dies on Asia/Jerusalem.

@detrout
Copy link

detrout commented Sep 25, 2022

I got timezone to build with the 2022c release of the timezone database.

I had to make two kinds of changes.

I patched a couple of rules back to what was in the 2018 tz database.

--- a/tzdata/asia
+++ b/tzdata/asia
@@ -848,7 +848,7 @@
 Rule   HK      1948    only    -       May     2       3:30s   1:00    S
 Rule   HK      1948    1952    -       Oct     Sun>=28 3:30s   0       -
 Rule   HK      1949    1953    -       Apr     Sun>=1  3:30    1:00    S
-Rule   HK      1953    1964    -       Oct     Sun>=31 3:30    0       -
+Rule   HK      1953    1964    -       Oct     lastSun 3:30    0       -
 Rule   HK      1954    1964    -       Mar     Sun>=18 3:30    1:00    S
 Rule   HK      1965    1976    -       Apr     Sun>=16 3:30    1:00    S
 Rule   HK      1965    1976    -       Oct     Sun>=16 3:30    0       -
@@ -2026,7 +2026,7 @@
 #      ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
 
 # Rule NAME    FROM    TO      -       IN      ON      AT      SAVE    LETTER/S
-Rule   Zion    2005    2012    -       Apr     Fri<=1  2:00    1:00    D
+Rule   Zion    2005    2012    -       Apr      1      2:00    1:00    D
 Rule   Zion    2005    only    -       Oct      9      2:00    0       S
 Rule   Zion    2006    only    -       Oct      1      2:00    0       S
 Rule   Zion    2007    only    -       Sep     16      2:00    0       S
--- a/tzdata/europe
+++ b/tzdata/europe
@@ -3700,7 +3700,7 @@
 Rule   Turkey  1964    only    -       May     15      0:00    1:00    S
 Rule   Turkey  1964    only    -       Oct      1      0:00    0       -
 Rule   Turkey  1973    only    -       Jun      3      1:00    1:00    S
-Rule   Turkey  1973    1976    -       Oct     Sun>=31 2:00    0       -
+Rule   Turkey  1973    1976    -       Nov      4      2:00    0       -
 Rule   Turkey  1974    only    -       Mar     31      2:00    1:00    S
 Rule   Turkey  1975    only    -       Mar     22      2:00    1:00    S
 Rule   Turkey  1976    only    -       Mar     21      2:00    1:00    S

And I modified the zones.js to just ignore problems with February.

One rule that went to 2029 somehow triggered the getUTCDay() == i (which was 4 for thursday) and getUTCMonth() was 2.

--- a/util/zones.js
+++ b/util/zones.js
@@ -74,14 +74,6 @@
     } else if (date[2]) {
       for (i = 0, I = ABBREV.length; i < I; i++)
         if (ABBREV[i] === date[2]) break;
-      if (e.month == 1) {
-        for (var year = e.from; year <= e.to; year++) {
-          var fields = new Date(Date.UTC(year, 1, 29));
-          if (fields.getUTCDay() == i && fields.getUTCMonth() != 1) {
-            throw new Error("Last day Februrary: " + key + ", " + i + ", " + fields.getUTCDay() + ", " + fields.getUTCMonth() + ", " + year);
-          }
-        }
-      }
       day = [ i, -daysInMonth[e.month] ];
     } else {
       for (i = 0, I = ABBREV.length; i < I; i++)

Maybe this might hint at what the problem is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants