From 50d02973b2f24c49c7364ec5c86067d31dae094b Mon Sep 17 00:00:00 2001 From: "Christian G. Warden" Date: Tue, 23 Apr 2024 11:02:01 -0500 Subject: [PATCH 1/2] Preserve The Specified Timezone In Parse When parsing a string into a Time using the optional timezone parameter, set the location of the Time to the timezone's location so that Format uses that timezone. --- builtin/builtin.go | 1 + builtin/builtin_test.go | 1 + 2 files changed, 2 insertions(+) diff --git a/builtin/builtin.go b/builtin/builtin.go index efc01fc2f..1199f59c5 100644 --- a/builtin/builtin.go +++ b/builtin/builtin.go @@ -502,6 +502,7 @@ var Builtins = []*Function{ if err != nil { return nil, err } + t = t.In(tz) return t, nil } diff --git a/builtin/builtin_test.go b/builtin/builtin_test.go index 307d4a86a..6a7f71b3e 100644 --- a/builtin/builtin_test.go +++ b/builtin/builtin_test.go @@ -113,6 +113,7 @@ func TestBuiltin(t *testing.T) { {`duration("1h")`, time.Hour}, {`date("2006-01-02T15:04:05Z")`, time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)}, {`date("2006.01.02", "2006.01.02")`, time.Date(2006, 1, 2, 0, 0, 0, 0, time.UTC)}, + {`date("2023-04-23T00:30:00.000+0100", "2006-01-02T15:04:05-0700", "America/Chicago").Format("2006-01-02")`, "2023-04-22"}, {`first(ArrayOfString)`, "foo"}, {`first(ArrayOfInt)`, 1}, {`first(ArrayOfAny)`, 1}, From 42ff6c6d9e8b4c7ebe888271ad833f5c0a98030c Mon Sep 17 00:00:00 2001 From: "Christian G. Warden" Date: Tue, 23 Apr 2024 17:27:33 -0500 Subject: [PATCH 2/2] Add More Tests for Preserving Timezone Add test when timezone is used to parse a date-time. Add test when timezone is irrelevant because it's a date. --- builtin/builtin_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/builtin/builtin_test.go b/builtin/builtin_test.go index 6a7f71b3e..dca4bccfb 100644 --- a/builtin/builtin_test.go +++ b/builtin/builtin_test.go @@ -114,6 +114,8 @@ func TestBuiltin(t *testing.T) { {`date("2006-01-02T15:04:05Z")`, time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)}, {`date("2006.01.02", "2006.01.02")`, time.Date(2006, 1, 2, 0, 0, 0, 0, time.UTC)}, {`date("2023-04-23T00:30:00.000+0100", "2006-01-02T15:04:05-0700", "America/Chicago").Format("2006-01-02")`, "2023-04-22"}, + {`date("2023-04-23T00:30:00", "2006-01-02T15:04:05", "America/Chicago").Format("2006-01-02")`, "2023-04-23"}, + {`date("2023-04-23", "2006-01-02", "America/Chicago").Format("2006-01-02")`, "2023-04-23"}, {`first(ArrayOfString)`, "foo"}, {`first(ArrayOfInt)`, 1}, {`first(ArrayOfAny)`, 1},