From 2d1e2ed4f34a9d50e8488cb8ee282d5fd254d2f6 Mon Sep 17 00:00:00 2001 From: shayan javani Date: Sun, 2 Jun 2024 15:30:07 +0330 Subject: [PATCH] bug fixes, formatting changes --- gleam.toml | 2 +- src/birl.gleam | 54 ++--- src/birl/duration.gleam | 21 +- src/birl/zones.gleam | 491 ++++++++++++---------------------------- src/birl_ffi.erl | 2 +- src/birl_ffi.mjs | 20 +- 6 files changed, 189 insertions(+), 401 deletions(-) diff --git a/gleam.toml b/gleam.toml index 95d708a..248029e 100644 --- a/gleam.toml +++ b/gleam.toml @@ -1,5 +1,5 @@ name = "birl" -version = "1.7.0" +version = "1.7.1" description = "Glistix fork of birl, a Date / Time handling library" gleam = ">= 0.32.0" internal_modules = ["birl/zones"] diff --git a/src/birl.gleam b/src/birl.gleam index ad490c5..decdb41 100644 --- a/src/birl.gleam +++ b/src/birl.gleam @@ -361,7 +361,8 @@ pub fn parse(value: String) -> Result(Time, Nil) { Ok(#(time_string, Ok(0))) } [time_string, milli_seconds_string], [_] - | [_], [time_string, milli_seconds_string] -> { + | [_], [time_string, milli_seconds_string] + -> { Ok(#( time_string, milli_seconds_string @@ -445,7 +446,8 @@ pub fn parse_time_of_day(value: String) -> Result(#(TimeOfDay, String), Nil) { Ok(#(time_string, Ok(0))) } [time_string, milli_seconds_string], [_] - | [_], [time_string, milli_seconds_string] -> { + | [_], [time_string, milli_seconds_string] + -> { Ok(#( time_string, milli_seconds_string @@ -493,7 +495,8 @@ pub fn parse_naive_time_of_day( Ok(#(time_string, Ok(0))) } [time_string, milli_seconds_string], [_] - | [_], [time_string, milli_seconds_string] -> { + | [_], [time_string, milli_seconds_string] + -> { Ok(#( time_string, milli_seconds_string @@ -608,7 +611,8 @@ pub fn from_naive(value: String) -> Result(Time, Nil) { [_], [_] -> Ok(#(time_string, Ok(0))) [time_string, milli_seconds_string], [_] - | [_], [time_string, milli_seconds_string] -> + | [_], [time_string, milli_seconds_string] + -> Ok(#( time_string, milli_seconds_string @@ -913,12 +917,8 @@ pub fn difference(a: Time, b: Time) -> duration.Duration { } const string_to_units = [ - #("year", duration.Year), - #("month", duration.Month), - #("week", duration.Week), - #("day", duration.Day), - #("hour", duration.Hour), - #("minute", duration.Minute), + #("year", duration.Year), #("month", duration.Month), #("week", duration.Week), + #("day", duration.Day), #("hour", duration.Hour), #("minute", duration.Minute), #("second", duration.Second), ] @@ -965,12 +965,8 @@ pub fn parse_relative(origin: Time, legible_difference: String) { } const units_to_string = [ - #(duration.Year, "year"), - #(duration.Month, "month"), - #(duration.Week, "week"), - #(duration.Day, "day"), - #(duration.Hour, "hour"), - #(duration.Minute, "minute"), + #(duration.Year, "year"), #(duration.Month, "month"), #(duration.Week, "week"), + #(duration.Day, "day"), #(duration.Hour, "hour"), #(duration.Minute, "minute"), #(duration.Second, "second"), ] @@ -1630,28 +1626,18 @@ fn month_from_int(month: Int) -> Result(Month, Nil) { } const weekday_strings = [ - #(Mon, #("Monday", "Mon")), - #(Tue, #("Tuesday", "Tue")), - #(Wed, #("Wednesday", "Wed")), - #(Thu, #("Thursday", "Thu")), - #(Fri, #("Friday", "Fri")), - #(Sat, #("Saturday", "Sat")), + #(Mon, #("Monday", "Mon")), #(Tue, #("Tuesday", "Tue")), + #(Wed, #("Wednesday", "Wed")), #(Thu, #("Thursday", "Thu")), + #(Fri, #("Friday", "Fri")), #(Sat, #("Saturday", "Sat")), #(Sun, #("Sunday", "Sun")), ] const month_strings = [ - #(Jan, #("January", "Jan")), - #(Feb, #("February", "Feb")), - #(Mar, #("March", "Mar")), - #(Apr, #("April", "Apr")), - #(May, #("May", "May")), - #(Jun, #("June", "Jun")), - #(Jul, #("July", "Jul")), - #(Aug, #("August", "Aug")), - #(Sep, #("September", "Sep")), - #(Oct, #("October", "Oct")), - #(Nov, #("November", "Nov")), - #(Dec, #("December", "Dec")), + #(Jan, #("January", "Jan")), #(Feb, #("February", "Feb")), + #(Mar, #("March", "Mar")), #(Apr, #("April", "Apr")), #(May, #("May", "May")), + #(Jun, #("June", "Jun")), #(Jul, #("July", "Jul")), #(Aug, #("August", "Aug")), + #(Sep, #("September", "Sep")), #(Oct, #("October", "Oct")), + #(Nov, #("November", "Nov")), #(Dec, #("December", "Dec")), ] @external(erlang, "birl_ffi", "now") diff --git a/src/birl/duration.gleam b/src/birl/duration.gleam index 87224d9..8dbeb19 100644 --- a/src/birl/duration.gleam +++ b/src/birl/duration.gleam @@ -245,14 +245,8 @@ const accurate_month = 2_629_746_000_000 const accurate_year = 31_556_952_000_000 const unit_values = [ - #(Year, year), - #(Month, month), - #(Week, week), - #(Day, day), - #(Hour, hour), - #(Minute, minute), - #(Second, second), - #(MilliSecond, milli_second), + #(Year, year), #(Month, month), #(Week, week), #(Day, day), #(Hour, hour), + #(Minute, minute), #(Second, second), #(MilliSecond, milli_second), #(MicroSecond, 1), ] @@ -292,14 +286,9 @@ const milli_second_units = [ ] const units = [ - #(Year, year_units), - #(Month, month_units), - #(Week, week_units), - #(Day, day_units), - #(Hour, hour_units), - #(Minute, minute_units), - #(Second, second_units), - #(MilliSecond, milli_second_units), + #(Year, year_units), #(Month, month_units), #(Week, week_units), + #(Day, day_units), #(Hour, hour_units), #(Minute, minute_units), + #(Second, second_units), #(MilliSecond, milli_second_units), ] /// you can use this function to create a new duration using expressions like: diff --git a/src/birl/zones.gleam b/src/birl/zones.gleam index 958cf97..a1b9be6 100644 --- a/src/birl/zones.gleam +++ b/src/birl/zones.gleam @@ -1,32 +1,17 @@ //// This file is generated by zones-provider pub const list = [ - #("Africa/Abidjan", 0), - #("Africa/Algiers", 3600), - #("Africa/Bissau", 0), - #("Africa/Cairo", 7200), - #("Africa/Casablanca", 3600), - #("Africa/Ceuta", 3600), - #("Africa/El_Aaiun", 3600), - #("Africa/Johannesburg", 7200), - #("Africa/Juba", 7200), - #("Africa/Khartoum", 7200), - #("Africa/Lagos", 3600), - #("Africa/Maputo", 7200), - #("Africa/Monrovia", 0), - #("Africa/Nairobi", 10_800), - #("Africa/Ndjamena", 3600), - #("Africa/Sao_Tome", 0), - #("Africa/Tripoli", 7200), - #("Africa/Tunis", 3600), - #("Africa/Windhoek", 7200), - #("America/Adak", -36_000), - #("America/Anchorage", -32_400), - #("America/Araguaina", -10_800), - #("America/Argentina/Buenos_Aires", -10_800), + #("Africa/Abidjan", 0), #("Africa/Algiers", 3600), #("Africa/Bissau", 0), + #("Africa/Cairo", 7200), #("Africa/Casablanca", 3600), #("Africa/Ceuta", 3600), + #("Africa/El_Aaiun", 3600), #("Africa/Johannesburg", 7200), + #("Africa/Juba", 7200), #("Africa/Khartoum", 7200), #("Africa/Lagos", 3600), + #("Africa/Maputo", 7200), #("Africa/Monrovia", 0), #("Africa/Nairobi", 10_800), + #("Africa/Ndjamena", 3600), #("Africa/Sao_Tome", 0), #("Africa/Tripoli", 7200), + #("Africa/Tunis", 3600), #("Africa/Windhoek", 7200), + #("America/Adak", -36_000), #("America/Anchorage", -32_400), + #("America/Araguaina", -10_800), #("America/Argentina/Buenos_Aires", -10_800), #("America/Argentina/Catamarca", -10_800), - #("America/Argentina/Cordoba", -10_800), - #("America/Argentina/Jujuy", -10_800), + #("America/Argentina/Cordoba", -10_800), #("America/Argentina/Jujuy", -10_800), #("America/Argentina/La_Rioja", -10_800), #("America/Argentina/Mendoza", -10_800), #("America/Argentina/Rio_Gallegos", -10_800), @@ -34,322 +19,148 @@ pub const list = [ #("America/Argentina/San_Juan", -10_800), #("America/Argentina/San_Luis", -10_800), #("America/Argentina/Tucuman", -10_800), - #("America/Argentina/Ushuaia", -10_800), - #("America/Asuncion", -14_400), - #("America/Bahia", -10_800), - #("America/Bahia_Banderas", -21_600), - #("America/Barbados", -14_400), - #("America/Belem", -10_800), - #("America/Belize", -21_600), - #("America/Boa_Vista", -14_400), - #("America/Bogota", -18_000), - #("America/Boise", -25_200), - #("America/Cambridge_Bay", -25_200), - #("America/Campo_Grande", -14_400), - #("America/Cancun", -18_000), - #("America/Caracas", -14_400), - #("America/Cayenne", -10_800), - #("America/Chicago", -21_600), - #("America/Chihuahua", -21_600), - #("America/Ciudad_Juarez", -25_200), - #("America/Costa_Rica", -21_600), - #("America/Cuiaba", -14_400), - #("America/Danmarkshavn", 0), - #("America/Dawson", -25_200), - #("America/Dawson_Creek", -25_200), - #("America/Denver", -25_200), - #("America/Detroit", -18_000), - #("America/Edmonton", -25_200), - #("America/Eirunepe", -18_000), - #("America/El_Salvador", -21_600), - #("America/Fort_Nelson", -25_200), - #("America/Fortaleza", -10_800), - #("America/Glace_Bay", -14_400), - #("America/Goose_Bay", -14_400), - #("America/Grand_Turk", -18_000), - #("America/Guatemala", -21_600), - #("America/Guayaquil", -18_000), - #("America/Guyana", -14_400), - #("America/Halifax", -14_400), - #("America/Havana", -18_000), - #("America/Hermosillo", -25_200), - #("America/Indiana/Indianapolis", -18_000), - #("America/Indiana/Knox", -21_600), - #("America/Indiana/Marengo", -18_000), + #("America/Argentina/Ushuaia", -10_800), #("America/Asuncion", -14_400), + #("America/Bahia", -10_800), #("America/Bahia_Banderas", -21_600), + #("America/Barbados", -14_400), #("America/Belem", -10_800), + #("America/Belize", -21_600), #("America/Boa_Vista", -14_400), + #("America/Bogota", -18_000), #("America/Boise", -25_200), + #("America/Cambridge_Bay", -25_200), #("America/Campo_Grande", -14_400), + #("America/Cancun", -18_000), #("America/Caracas", -14_400), + #("America/Cayenne", -10_800), #("America/Chicago", -21_600), + #("America/Chihuahua", -21_600), #("America/Ciudad_Juarez", -25_200), + #("America/Costa_Rica", -21_600), #("America/Cuiaba", -14_400), + #("America/Danmarkshavn", 0), #("America/Dawson", -25_200), + #("America/Dawson_Creek", -25_200), #("America/Denver", -25_200), + #("America/Detroit", -18_000), #("America/Edmonton", -25_200), + #("America/Eirunepe", -18_000), #("America/El_Salvador", -21_600), + #("America/Fort_Nelson", -25_200), #("America/Fortaleza", -10_800), + #("America/Glace_Bay", -14_400), #("America/Goose_Bay", -14_400), + #("America/Grand_Turk", -18_000), #("America/Guatemala", -21_600), + #("America/Guayaquil", -18_000), #("America/Guyana", -14_400), + #("America/Halifax", -14_400), #("America/Havana", -18_000), + #("America/Hermosillo", -25_200), #("America/Indiana/Indianapolis", -18_000), + #("America/Indiana/Knox", -21_600), #("America/Indiana/Marengo", -18_000), #("America/Indiana/Petersburg", -18_000), - #("America/Indiana/Tell_City", -21_600), - #("America/Indiana/Vevay", -18_000), - #("America/Indiana/Vincennes", -18_000), - #("America/Indiana/Winamac", -18_000), - #("America/Inuvik", -25_200), - #("America/Iqaluit", -18_000), - #("America/Jamaica", -18_000), - #("America/Juneau", -32_400), + #("America/Indiana/Tell_City", -21_600), #("America/Indiana/Vevay", -18_000), + #("America/Indiana/Vincennes", -18_000), #("America/Indiana/Winamac", -18_000), + #("America/Inuvik", -25_200), #("America/Iqaluit", -18_000), + #("America/Jamaica", -18_000), #("America/Juneau", -32_400), #("America/Kentucky/Louisville", -18_000), - #("America/Kentucky/Monticello", -18_000), - #("America/La_Paz", -14_400), - #("America/Lima", -18_000), - #("America/Los_Angeles", -28_800), - #("America/Maceio", -10_800), - #("America/Managua", -21_600), - #("America/Manaus", -14_400), - #("America/Martinique", -14_400), - #("America/Matamoros", -21_600), - #("America/Mazatlan", -25_200), - #("America/Menominee", -21_600), - #("America/Merida", -21_600), - #("America/Metlakatla", -32_400), - #("America/Mexico_City", -21_600), - #("America/Miquelon", -10_800), - #("America/Moncton", -14_400), - #("America/Monterrey", -21_600), - #("America/Montevideo", -10_800), - #("America/New_York", -18_000), - #("America/Nome", -32_400), - #("America/Noronha", -7200), - #("America/North_Dakota/Beulah", -21_600), + #("America/Kentucky/Monticello", -18_000), #("America/La_Paz", -14_400), + #("America/Lima", -18_000), #("America/Los_Angeles", -28_800), + #("America/Maceio", -10_800), #("America/Managua", -21_600), + #("America/Manaus", -14_400), #("America/Martinique", -14_400), + #("America/Matamoros", -21_600), #("America/Mazatlan", -25_200), + #("America/Menominee", -21_600), #("America/Merida", -21_600), + #("America/Metlakatla", -32_400), #("America/Mexico_City", -21_600), + #("America/Miquelon", -10_800), #("America/Moncton", -14_400), + #("America/Monterrey", -21_600), #("America/Montevideo", -10_800), + #("America/New_York", -18_000), #("America/Nome", -32_400), + #("America/Noronha", -7200), #("America/North_Dakota/Beulah", -21_600), #("America/North_Dakota/Center", -21_600), - #("America/North_Dakota/New_Salem", -21_600), - #("America/Nuuk", -7200), - #("America/Ojinaga", -21_600), - #("America/Panama", -18_000), - #("America/Paramaribo", -10_800), - #("America/Phoenix", -25_200), - #("America/Port-au-Prince", -18_000), - #("America/Porto_Velho", -14_400), - #("America/Puerto_Rico", -14_400), - #("America/Punta_Arenas", -10_800), - #("America/Rankin_Inlet", -21_600), - #("America/Recife", -10_800), - #("America/Regina", -21_600), - #("America/Resolute", -21_600), - #("America/Rio_Branco", -18_000), - #("America/Santarem", -10_800), - #("America/Santiago", -14_400), - #("America/Santo_Domingo", -14_400), - #("America/Sao_Paulo", -10_800), - #("America/Scoresbysund", -7200), - #("America/Sitka", -32_400), - #("America/St_Johns", -12_600), - #("America/Swift_Current", -21_600), - #("America/Tegucigalpa", -21_600), - #("America/Thule", -14_400), - #("America/Tijuana", -28_800), - #("America/Toronto", -18_000), - #("America/Vancouver", -28_800), - #("America/Whitehorse", -25_200), - #("America/Winnipeg", -21_600), - #("America/Yakutat", -32_400), - #("Antarctica/Casey", 28_800), - #("Antarctica/Davis", 25_200), - #("Antarctica/Macquarie", 36_000), - #("Antarctica/Mawson", 18_000), - #("Antarctica/Palmer", -10_800), - #("Antarctica/Rothera", -10_800), - #("Antarctica/Troll", 0), - #("Antarctica/Vostok", 18_000), - #("Asia/Almaty", 18_000), - #("Asia/Amman", 10_800), - #("Asia/Anadyr", 43_200), - #("Asia/Aqtau", 18_000), - #("Asia/Aqtobe", 18_000), - #("Asia/Ashgabat", 18_000), - #("Asia/Atyrau", 18_000), - #("Asia/Baghdad", 10_800), - #("Asia/Baku", 14_400), - #("Asia/Bangkok", 25_200), - #("Asia/Barnaul", 25_200), - #("Asia/Beirut", 7200), - #("Asia/Bishkek", 21_600), - #("Asia/Chita", 32_400), - #("Asia/Choibalsan", 28_800), - #("Asia/Colombo", 19_800), - #("Asia/Damascus", 10_800), - #("Asia/Dhaka", 21_600), - #("Asia/Dili", 32_400), - #("Asia/Dubai", 14_400), - #("Asia/Dushanbe", 18_000), - #("Asia/Famagusta", 7200), - #("Asia/Gaza", 7200), - #("Asia/Hebron", 7200), - #("Asia/Ho_Chi_Minh", 25_200), - #("Asia/Hong_Kong", 28_800), - #("Asia/Hovd", 25_200), - #("Asia/Irkutsk", 28_800), - #("Asia/Jakarta", 25_200), - #("Asia/Jayapura", 32_400), - #("Asia/Jerusalem", 7200), - #("Asia/Kabul", 16_200), - #("Asia/Kamchatka", 43_200), - #("Asia/Karachi", 18_000), - #("Asia/Kathmandu", 20_700), - #("Asia/Khandyga", 32_400), - #("Asia/Kolkata", 19_800), - #("Asia/Krasnoyarsk", 25_200), - #("Asia/Kuching", 28_800), - #("Asia/Macau", 28_800), - #("Asia/Magadan", 39_600), - #("Asia/Makassar", 28_800), - #("Asia/Manila", 28_800), - #("Asia/Nicosia", 7200), - #("Asia/Novokuznetsk", 25_200), - #("Asia/Novosibirsk", 25_200), - #("Asia/Omsk", 21_600), - #("Asia/Oral", 18_000), - #("Asia/Pontianak", 25_200), - #("Asia/Pyongyang", 32_400), - #("Asia/Qatar", 10_800), - #("Asia/Qostanay", 18_000), - #("Asia/Qyzylorda", 18_000), - #("Asia/Riyadh", 10_800), - #("Asia/Sakhalin", 39_600), - #("Asia/Samarkand", 18_000), - #("Asia/Seoul", 32_400), - #("Asia/Shanghai", 28_800), - #("Asia/Singapore", 28_800), - #("Asia/Srednekolymsk", 39_600), - #("Asia/Taipei", 28_800), - #("Asia/Tashkent", 18_000), - #("Asia/Tbilisi", 14_400), - #("Asia/Tehran", 12_600), - #("Asia/Thimphu", 21_600), - #("Asia/Tokyo", 32_400), - #("Asia/Tomsk", 25_200), - #("Asia/Ulaanbaatar", 28_800), - #("Asia/Urumqi", 21_600), - #("Asia/Ust-Nera", 36_000), - #("Asia/Vladivostok", 36_000), - #("Asia/Yakutsk", 32_400), - #("Asia/Yangon", 23_400), - #("Asia/Yekaterinburg", 18_000), - #("Asia/Yerevan", 14_400), - #("Atlantic/Azores", -3600), - #("Atlantic/Bermuda", -14_400), - #("Atlantic/Canary", 0), - #("Atlantic/Cape_Verde", -3600), - #("Atlantic/Faroe", 0), - #("Atlantic/Madeira", 0), - #("Atlantic/South_Georgia", -7200), - #("Atlantic/Stanley", -10_800), - #("Australia/Adelaide", 34_200), - #("Australia/Brisbane", 36_000), - #("Australia/Broken_Hill", 34_200), - #("Australia/Darwin", 34_200), - #("Australia/Eucla", 31_500), - #("Australia/Hobart", 36_000), - #("Australia/Lindeman", 36_000), - #("Australia/Lord_Howe", 37_800), - #("Australia/Melbourne", 36_000), - #("Australia/Perth", 28_800), - #("Australia/Sydney", 36_000), - #("CET", 3600), - #("CST6CDT", -21_600), - #("EET", 7200), - #("EST", -18_000), - #("EST5EDT", -18_000), - #("Etc/GMT", 0), - #("Etc/GMT+1", -3600), - #("Etc/GMT+10", -36_000), - #("Etc/GMT+11", -39_600), - #("Etc/GMT+12", -43_200), - #("Etc/GMT+2", -7200), - #("Etc/GMT+3", -10_800), - #("Etc/GMT+4", -14_400), - #("Etc/GMT+5", -18_000), - #("Etc/GMT+6", -21_600), - #("Etc/GMT+7", -25_200), - #("Etc/GMT+8", -28_800), - #("Etc/GMT+9", -32_400), - #("Etc/GMT-1", 3600), - #("Etc/GMT-10", 36_000), - #("Etc/GMT-11", 39_600), - #("Etc/GMT-12", 43_200), - #("Etc/GMT-13", 46_800), - #("Etc/GMT-14", 50_400), - #("Etc/GMT-2", 7200), - #("Etc/GMT-3", 10_800), - #("Etc/GMT-4", 14_400), - #("Etc/GMT-5", 18_000), - #("Etc/GMT-6", 21_600), - #("Etc/GMT-7", 25_200), - #("Etc/GMT-8", 28_800), - #("Etc/GMT-9", 32_400), - #("Etc/UTC", 0), - #("Europe/Andorra", 3600), - #("Europe/Astrakhan", 14_400), - #("Europe/Athens", 7200), - #("Europe/Belgrade", 3600), - #("Europe/Berlin", 3600), - #("Europe/Brussels", 3600), - #("Europe/Bucharest", 7200), - #("Europe/Budapest", 3600), - #("Europe/Chisinau", 7200), - #("Europe/Dublin", 3600), - #("Europe/Gibraltar", 3600), - #("Europe/Helsinki", 7200), - #("Europe/Istanbul", 10_800), - #("Europe/Kaliningrad", 7200), - #("Europe/Kirov", 10_800), - #("Europe/Kyiv", 7200), - #("Europe/Lisbon", 0), - #("Europe/London", 0), - #("Europe/Madrid", 3600), - #("Europe/Malta", 3600), - #("Europe/Minsk", 10_800), - #("Europe/Moscow", 10_800), - #("Europe/Paris", 3600), - #("Europe/Prague", 3600), - #("Europe/Riga", 7200), - #("Europe/Rome", 3600), - #("Europe/Samara", 14_400), - #("Europe/Saratov", 14_400), - #("Europe/Simferopol", 10_800), - #("Europe/Sofia", 7200), - #("Europe/Tallinn", 7200), - #("Europe/Tirane", 3600), - #("Europe/Ulyanovsk", 14_400), - #("Europe/Vienna", 3600), - #("Europe/Vilnius", 7200), - #("Europe/Volgograd", 10_800), - #("Europe/Warsaw", 3600), - #("Europe/Zurich", 3600), - #("HST", -36_000), - #("Indian/Chagos", 21_600), - #("Indian/Maldives", 18_000), - #("Indian/Mauritius", 14_400), - #("MET", 3600), - #("MST", -25_200), - #("MST7MDT", -25_200), - #("PST8PDT", -28_800), - #("Pacific/Apia", 46_800), - #("Pacific/Auckland", 43_200), - #("Pacific/Bougainville", 39_600), - #("Pacific/Chatham", 45_900), - #("Pacific/Easter", -21_600), - #("Pacific/Efate", 39_600), - #("Pacific/Fakaofo", 46_800), - #("Pacific/Fiji", 43_200), - #("Pacific/Galapagos", -21_600), - #("Pacific/Gambier", -32_400), - #("Pacific/Guadalcanal", 39_600), - #("Pacific/Guam", 36_000), - #("Pacific/Honolulu", -36_000), - #("Pacific/Kanton", 46_800), - #("Pacific/Kiritimati", 50_400), - #("Pacific/Kosrae", 39_600), - #("Pacific/Kwajalein", 43_200), - #("Pacific/Marquesas", -34_200), - #("Pacific/Nauru", 43_200), - #("Pacific/Niue", -39_600), - #("Pacific/Norfolk", 39_600), - #("Pacific/Noumea", 39_600), - #("Pacific/Pago_Pago", -39_600), - #("Pacific/Palau", 32_400), - #("Pacific/Pitcairn", -28_800), - #("Pacific/Port_Moresby", 36_000), - #("Pacific/Rarotonga", -36_000), - #("Pacific/Tahiti", -36_000), - #("Pacific/Tarawa", 43_200), - #("Pacific/Tongatapu", 46_800), - #("WET", 0), + #("America/North_Dakota/New_Salem", -21_600), #("America/Nuuk", -7200), + #("America/Ojinaga", -21_600), #("America/Panama", -18_000), + #("America/Paramaribo", -10_800), #("America/Phoenix", -25_200), + #("America/Port-au-Prince", -18_000), #("America/Porto_Velho", -14_400), + #("America/Puerto_Rico", -14_400), #("America/Punta_Arenas", -10_800), + #("America/Rankin_Inlet", -21_600), #("America/Recife", -10_800), + #("America/Regina", -21_600), #("America/Resolute", -21_600), + #("America/Rio_Branco", -18_000), #("America/Santarem", -10_800), + #("America/Santiago", -14_400), #("America/Santo_Domingo", -14_400), + #("America/Sao_Paulo", -10_800), #("America/Scoresbysund", -7200), + #("America/Sitka", -32_400), #("America/St_Johns", -12_600), + #("America/Swift_Current", -21_600), #("America/Tegucigalpa", -21_600), + #("America/Thule", -14_400), #("America/Tijuana", -28_800), + #("America/Toronto", -18_000), #("America/Vancouver", -28_800), + #("America/Whitehorse", -25_200), #("America/Winnipeg", -21_600), + #("America/Yakutat", -32_400), #("Antarctica/Casey", 28_800), + #("Antarctica/Davis", 25_200), #("Antarctica/Macquarie", 36_000), + #("Antarctica/Mawson", 18_000), #("Antarctica/Palmer", -10_800), + #("Antarctica/Rothera", -10_800), #("Antarctica/Troll", 0), + #("Antarctica/Vostok", 18_000), #("Asia/Almaty", 18_000), + #("Asia/Amman", 10_800), #("Asia/Anadyr", 43_200), #("Asia/Aqtau", 18_000), + #("Asia/Aqtobe", 18_000), #("Asia/Ashgabat", 18_000), #("Asia/Atyrau", 18_000), + #("Asia/Baghdad", 10_800), #("Asia/Baku", 14_400), #("Asia/Bangkok", 25_200), + #("Asia/Barnaul", 25_200), #("Asia/Beirut", 7200), #("Asia/Bishkek", 21_600), + #("Asia/Chita", 32_400), #("Asia/Choibalsan", 28_800), + #("Asia/Colombo", 19_800), #("Asia/Damascus", 10_800), #("Asia/Dhaka", 21_600), + #("Asia/Dili", 32_400), #("Asia/Dubai", 14_400), #("Asia/Dushanbe", 18_000), + #("Asia/Famagusta", 7200), #("Asia/Gaza", 7200), #("Asia/Hebron", 7200), + #("Asia/Ho_Chi_Minh", 25_200), #("Asia/Hong_Kong", 28_800), + #("Asia/Hovd", 25_200), #("Asia/Irkutsk", 28_800), #("Asia/Jakarta", 25_200), + #("Asia/Jayapura", 32_400), #("Asia/Jerusalem", 7200), #("Asia/Kabul", 16_200), + #("Asia/Kamchatka", 43_200), #("Asia/Karachi", 18_000), + #("Asia/Kathmandu", 20_700), #("Asia/Khandyga", 32_400), + #("Asia/Kolkata", 19_800), #("Asia/Krasnoyarsk", 25_200), + #("Asia/Kuching", 28_800), #("Asia/Macau", 28_800), #("Asia/Magadan", 39_600), + #("Asia/Makassar", 28_800), #("Asia/Manila", 28_800), #("Asia/Nicosia", 7200), + #("Asia/Novokuznetsk", 25_200), #("Asia/Novosibirsk", 25_200), + #("Asia/Omsk", 21_600), #("Asia/Oral", 18_000), #("Asia/Pontianak", 25_200), + #("Asia/Pyongyang", 32_400), #("Asia/Qatar", 10_800), + #("Asia/Qostanay", 18_000), #("Asia/Qyzylorda", 18_000), + #("Asia/Riyadh", 10_800), #("Asia/Sakhalin", 39_600), + #("Asia/Samarkand", 18_000), #("Asia/Seoul", 32_400), + #("Asia/Shanghai", 28_800), #("Asia/Singapore", 28_800), + #("Asia/Srednekolymsk", 39_600), #("Asia/Taipei", 28_800), + #("Asia/Tashkent", 18_000), #("Asia/Tbilisi", 14_400), + #("Asia/Tehran", 12_600), #("Asia/Thimphu", 21_600), #("Asia/Tokyo", 32_400), + #("Asia/Tomsk", 25_200), #("Asia/Ulaanbaatar", 28_800), + #("Asia/Urumqi", 21_600), #("Asia/Ust-Nera", 36_000), + #("Asia/Vladivostok", 36_000), #("Asia/Yakutsk", 32_400), + #("Asia/Yangon", 23_400), #("Asia/Yekaterinburg", 18_000), + #("Asia/Yerevan", 14_400), #("Atlantic/Azores", -3600), + #("Atlantic/Bermuda", -14_400), #("Atlantic/Canary", 0), + #("Atlantic/Cape_Verde", -3600), #("Atlantic/Faroe", 0), + #("Atlantic/Madeira", 0), #("Atlantic/South_Georgia", -7200), + #("Atlantic/Stanley", -10_800), #("Australia/Adelaide", 34_200), + #("Australia/Brisbane", 36_000), #("Australia/Broken_Hill", 34_200), + #("Australia/Darwin", 34_200), #("Australia/Eucla", 31_500), + #("Australia/Hobart", 36_000), #("Australia/Lindeman", 36_000), + #("Australia/Lord_Howe", 37_800), #("Australia/Melbourne", 36_000), + #("Australia/Perth", 28_800), #("Australia/Sydney", 36_000), #("CET", 3600), + #("CST6CDT", -21_600), #("EET", 7200), #("EST", -18_000), + #("EST5EDT", -18_000), #("Etc/GMT", 0), #("Etc/GMT+1", -3600), + #("Etc/GMT+10", -36_000), #("Etc/GMT+11", -39_600), #("Etc/GMT+12", -43_200), + #("Etc/GMT+2", -7200), #("Etc/GMT+3", -10_800), #("Etc/GMT+4", -14_400), + #("Etc/GMT+5", -18_000), #("Etc/GMT+6", -21_600), #("Etc/GMT+7", -25_200), + #("Etc/GMT+8", -28_800), #("Etc/GMT+9", -32_400), #("Etc/GMT-1", 3600), + #("Etc/GMT-10", 36_000), #("Etc/GMT-11", 39_600), #("Etc/GMT-12", 43_200), + #("Etc/GMT-13", 46_800), #("Etc/GMT-14", 50_400), #("Etc/GMT-2", 7200), + #("Etc/GMT-3", 10_800), #("Etc/GMT-4", 14_400), #("Etc/GMT-5", 18_000), + #("Etc/GMT-6", 21_600), #("Etc/GMT-7", 25_200), #("Etc/GMT-8", 28_800), + #("Etc/GMT-9", 32_400), #("Etc/UTC", 0), #("Europe/Andorra", 3600), + #("Europe/Astrakhan", 14_400), #("Europe/Athens", 7200), + #("Europe/Belgrade", 3600), #("Europe/Berlin", 3600), + #("Europe/Brussels", 3600), #("Europe/Bucharest", 7200), + #("Europe/Budapest", 3600), #("Europe/Chisinau", 7200), + #("Europe/Dublin", 3600), #("Europe/Gibraltar", 3600), + #("Europe/Helsinki", 7200), #("Europe/Istanbul", 10_800), + #("Europe/Kaliningrad", 7200), #("Europe/Kirov", 10_800), + #("Europe/Kyiv", 7200), #("Europe/Lisbon", 0), #("Europe/London", 0), + #("Europe/Madrid", 3600), #("Europe/Malta", 3600), #("Europe/Minsk", 10_800), + #("Europe/Moscow", 10_800), #("Europe/Paris", 3600), #("Europe/Prague", 3600), + #("Europe/Riga", 7200), #("Europe/Rome", 3600), #("Europe/Samara", 14_400), + #("Europe/Saratov", 14_400), #("Europe/Simferopol", 10_800), + #("Europe/Sofia", 7200), #("Europe/Tallinn", 7200), #("Europe/Tirane", 3600), + #("Europe/Ulyanovsk", 14_400), #("Europe/Vienna", 3600), + #("Europe/Vilnius", 7200), #("Europe/Volgograd", 10_800), + #("Europe/Warsaw", 3600), #("Europe/Zurich", 3600), #("HST", -36_000), + #("Indian/Chagos", 21_600), #("Indian/Maldives", 18_000), + #("Indian/Mauritius", 14_400), #("MET", 3600), #("MST", -25_200), + #("MST7MDT", -25_200), #("PST8PDT", -28_800), #("Pacific/Apia", 46_800), + #("Pacific/Auckland", 43_200), #("Pacific/Bougainville", 39_600), + #("Pacific/Chatham", 45_900), #("Pacific/Easter", -21_600), + #("Pacific/Efate", 39_600), #("Pacific/Fakaofo", 46_800), + #("Pacific/Fiji", 43_200), #("Pacific/Galapagos", -21_600), + #("Pacific/Gambier", -32_400), #("Pacific/Guadalcanal", 39_600), + #("Pacific/Guam", 36_000), #("Pacific/Honolulu", -36_000), + #("Pacific/Kanton", 46_800), #("Pacific/Kiritimati", 50_400), + #("Pacific/Kosrae", 39_600), #("Pacific/Kwajalein", 43_200), + #("Pacific/Marquesas", -34_200), #("Pacific/Nauru", 43_200), + #("Pacific/Niue", -39_600), #("Pacific/Norfolk", 39_600), + #("Pacific/Noumea", 39_600), #("Pacific/Pago_Pago", -39_600), + #("Pacific/Palau", 32_400), #("Pacific/Pitcairn", -28_800), + #("Pacific/Port_Moresby", 36_000), #("Pacific/Rarotonga", -36_000), + #("Pacific/Tahiti", -36_000), #("Pacific/Tarawa", 43_200), + #("Pacific/Tongatapu", 46_800), #("WET", 0), ] diff --git a/src/birl_ffi.erl b/src/birl_ffi.erl index b94f451..8c8e16e 100644 --- a/src/birl_ffi.erl +++ b/src/birl_ffi.erl @@ -39,7 +39,7 @@ local_offset() -> if LD == UD -> (LH - UH) * 60 + LM - UM; - LD > UD andalso LMo == UMo -> + (LD > UD andalso LMo == UMo) or (LD == 1 andalso LMo > UMo) -> (23 - UH) * 60 + (60 - UM) + LH * 60 + LM; true -> -((23 - LH) * 60 + (60 - LM) + UH * 60 + UM) diff --git a/src/birl_ffi.mjs b/src/birl_ffi.mjs index 0731ada..3b08c62 100644 --- a/src/birl_ffi.mjs +++ b/src/birl_ffi.mjs @@ -31,15 +31,17 @@ export function to_parts(timestamp, offset) { } export function from_parts(parts, offset) { - const date = new Date(Date.UTC( - parts[0][0], - parts[0][1] - 1, - parts[0][2], - parts[1][0], - parts[1][1], - parts[1][2], - parts[1][3], - )); + const date = new Date( + Date.UTC( + parts[0][0], + parts[0][1] - 1, + parts[0][2], + parts[1][0], + parts[1][1], + parts[1][2], + parts[1][3] + ) + ); return date.getTime() * 1000 - offset; }