From 08a0f615e4bda8d2a6bd1a112b827d35271ea503 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Sun, 18 Apr 2021 23:08:09 +0800 Subject: [PATCH] add getting timezone offset method --- pkg/utils/datetimes.go | 11 +++++++++-- pkg/utils/datetimes_test.go | 22 ++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) 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"