From 60af11ef7304ce96795aa5dd20f32c55b217a94d Mon Sep 17 00:00:00 2001 From: Felix <23635466+its-felix@users.noreply.github.com> Date: Wed, 20 Nov 2024 04:18:51 +0100 Subject: [PATCH] fix NewLocalDate --- go/common/xtime/localdate.go | 5 +++-- go/common/xtime/localdate_test.go | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/go/common/xtime/localdate.go b/go/common/xtime/localdate.go index 8dcdda4..51f03bd 100644 --- a/go/common/xtime/localdate.go +++ b/go/common/xtime/localdate.go @@ -11,7 +11,7 @@ type LocalDate int64 func NewLocalDate(t time.Time) LocalDate { year1 := 1970 - year2 := t.Year() - 1 // exclude the current year for leap year calculations + year2 := t.Year() mul := 1 if year1 > year2 { @@ -19,7 +19,8 @@ func NewLocalDate(t time.Time) LocalDate { mul = -1 } - totalYears := year2 - year1 + 1 + totalYears := year2 - year1 + year2 -= 1 // exclude the current year for leap year calculations leapYears1 := year1/4 - year1/100 + year1/400 leapYears2 := year2/4 - year2/100 + year2/400 leapYears := leapYears2 - leapYears1 diff --git a/go/common/xtime/localdate_test.go b/go/common/xtime/localdate_test.go index fe2708f..a02a9e0 100644 --- a/go/common/xtime/localdate_test.go +++ b/go/common/xtime/localdate_test.go @@ -11,6 +11,10 @@ func TestNewLocalDate(t *testing.T) { assert.Equal(t, LocalDate(0), NewLocalDate(time.Date(1970, time.January, 1, 0, 0, 0, 0, time.FixedZone("", -60*60*14)))) assert.Equal(t, LocalDate(0), NewLocalDate(time.Date(1970, time.January, 1, 0, 0, 0, 0, time.UTC))) assert.Equal(t, LocalDate(0), NewLocalDate(time.Date(1970, time.January, 1, 23, 59, 59, 0, time.FixedZone("", 60*60*14)))) + + assert.Equal(t, LocalDate(-365), NewLocalDate(time.Date(1969, time.January, 1, 0, 0, 0, 0, time.UTC))) + assert.Equal(t, LocalDate(365), NewLocalDate(time.Date(1971, time.January, 1, 0, 0, 0, 0, time.UTC))) + assert.Equal(t, LocalDate(165), NewLocalDate(time.Date(1970, time.June, 15, 0, 0, 0, 0, time.UTC))) } func TestParseLocalDate(t *testing.T) {