diff --git a/pkg/utils/datetimes.go b/pkg/utils/datetimes.go index 521d62e9..2b0bd4e1 100644 --- a/pkg/utils/datetimes.go +++ b/pkg/utils/datetimes.go @@ -59,10 +59,17 @@ func ParseFromShortDateTime(t string, utcOffset int16) (time.Time, error) { return time.ParseInLocation(shortDateTimeFormat, t, timezone) } +// GetTimezoneOffsetMinutes returns offset minutes according specified timezone +func GetTimezoneOffsetMinutes(timezone *time.Location) int16 { + _, tzOffset := time.Now().In(timezone).Zone() + tzMinuteOffset := int16(tzOffset / 60) + + return tzMinuteOffset +} + // FormatTimezoneOffset returns "+/-HH:MM" format of timezone func FormatTimezoneOffset(timezone *time.Location) string { - _, tzOffset := time.Now().In(timezone).Zone() - tzMinutesOffset := tzOffset / 60 + tzMinutesOffset := GetTimezoneOffsetMinutes(timezone) sign := "+" hourAbsOffset := tzMinutesOffset / 60 diff --git a/pkg/utils/datetimes_test.go b/pkg/utils/datetimes_test.go index 8971acbd..740f567f 100644 --- a/pkg/utils/datetimes_test.go +++ b/pkg/utils/datetimes_test.go @@ -53,6 +53,28 @@ func TestParseFromShortDateTime(t *testing.T) { assert.Equal(t, expectedValue, actualValue) } +func TestGetTimezoneOffsetMinutes(t *testing.T) { + timezone := time.FixedZone("Test Timezone", 120*60) + expectedValue := int16(120) + actualValue := GetTimezoneOffsetMinutes(timezone) + assert.Equal(t, expectedValue, actualValue) + + timezone = time.FixedZone("Test Timezone", 345*60) + expectedValue = int16(345) + actualValue = GetTimezoneOffsetMinutes(timezone) + assert.Equal(t, expectedValue, actualValue) + + timezone = time.FixedZone("Test Timezone", -720*60) + expectedValue = int16(-720) + actualValue = GetTimezoneOffsetMinutes(timezone) + assert.Equal(t, expectedValue, actualValue) + + timezone = time.FixedZone("Test Timezone", 0) + expectedValue = int16(0) + actualValue = GetTimezoneOffsetMinutes(timezone) + assert.Equal(t, expectedValue, actualValue) +} + func TestFormatTimezoneOffset(t *testing.T) { timezone := time.FixedZone("Test Timezone", 120*60) expectedValue := "+02:00"