From d71e381091b3893148d3ac12406eacbc33f1debc Mon Sep 17 00:00:00 2001 From: Asifur Rahaman Meeru Date: Fri, 28 Aug 2026 09:47:17 +0600 Subject: [PATCH] fix(offset): correct ADT, AST, BST and GST to GNU's values --- src/items/offset.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/items/offset.rs b/src/items/offset.rs index 5ccdc10..a243d27 100644 --- a/src/items/offset.rs +++ b/src/items/offset.rs @@ -331,7 +331,7 @@ fn timezone_name_to_offset(input: &str) -> ModalResult { "i" => Ok("+9"), "hst" => Ok("-10"), "h" => Ok("+8"), - "gst" => Ok("+4"), + "gst" => Ok("+10"), "gmt" => Ok("+0"), "g" => Ok("+7"), "f" => Ok("+6"), @@ -350,15 +350,15 @@ fn timezone_name_to_offset(input: &str) -> ModalResult { "cdt" => Ok("-5"), "cat" => Ok("+2"), "c" => Ok("+3"), - "bst" => Ok("+6"), + "bst" => Ok("+1"), "brt" => Ok("-3"), "brst" => Ok("-2"), "b" => Ok("+2"), - "ast" => Ok("-3"), + "ast" => Ok("-4"), "art" => Ok("-3"), "akst" => Ok("-9"), "akdt" => Ok("-8"), - "adt" => Ok("+4"), + "adt" => Ok("-3"), "a" => Ok("+1"), _ => Err(ErrMode::Backtrack(ContextError::new())), }?; @@ -457,6 +457,14 @@ mod tests { ("mesz", off(false, 2, 0)), ("mest", off(false, 2, 0)), ("kst", off(false, 9, 0)), + // Each of these resolved to a different real meaning of the + // abbreviation than the one GNU date uses, e.g. BST as Bangladesh + // Standard Time rather than British Summer Time. + ("adt", off(true, 3, 0)), // Atlantic Daylight, was +4 + ("ast", off(true, 4, 0)), // Atlantic Standard, was -3 + ("bst", off(false, 1, 0)), // British Summer, was +6 + ("gst", off(false, 10, 0)), // Guam Standard, was +4 + ("sst", off(true, 11, 0)), ("z123", off(false, 0, 0)), // space separator can be ignored if immediately followed by digits (GNU date behavior) ] { let mut s = input;