From 0438964e174b2df5cd615b1df4f60f7bf8e61279 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Mon, 17 Jun 2024 00:30:15 +0800 Subject: [PATCH] add seconds to time column in exported data --- pkg/converters/ezbookkeeping_plain_file.go | 2 +- pkg/utils/datetimes.go | 11 +++++++++++ pkg/utils/datetimes_test.go | 14 ++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/pkg/converters/ezbookkeeping_plain_file.go b/pkg/converters/ezbookkeeping_plain_file.go index 03bfc9c9..74ed49ab 100644 --- a/pkg/converters/ezbookkeeping_plain_file.go +++ b/pkg/converters/ezbookkeeping_plain_file.go @@ -43,7 +43,7 @@ func (e *EzBookKeepingPlainFileExporter) toExportedContent(uid int64, separator } transactionTimeZone := time.FixedZone("Transaction Timezone", int(transaction.TimezoneUtcOffset)*60) - transactionTime := utils.FormatUnixTimeToLongDateTimeWithoutSecond(utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime), transactionTimeZone) + transactionTime := utils.FormatUnixTimeToLongDateTime(utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime), transactionTimeZone) transactionTimezone := utils.FormatTimezoneOffset(transactionTimeZone) transactionType := e.getTransactionTypeName(transaction.Type) category := e.replaceDelimiters(e.getTransactionCategoryName(transaction.CategoryId, categoryMap), separator) diff --git a/pkg/utils/datetimes.go b/pkg/utils/datetimes.go index e9448313..0bef0c6b 100644 --- a/pkg/utils/datetimes.go +++ b/pkg/utils/datetimes.go @@ -40,6 +40,17 @@ func ParseNumericYearMonth(yearMonth string) (int32, int32, error) { return year, month, nil } +// FormatUnixTimeToLongDateTime returns a textual representation of the unix time formatted by long date time format +func FormatUnixTimeToLongDateTime(unixTime int64, timezone *time.Location) string { + t := parseFromUnixTime(unixTime) + + if timezone != nil { + t = t.In(timezone) + } + + return t.Format(longDateTimeFormat) +} + // FormatUnixTimeToLongDateTimeInServerTimezone returns a textual representation of the unix time formatted by long date time format func FormatUnixTimeToLongDateTimeInServerTimezone(unixTime int64) string { return parseFromUnixTime(unixTime).Format(longDateTimeFormat) diff --git a/pkg/utils/datetimes_test.go b/pkg/utils/datetimes_test.go index ce5db4f2..02b6f876 100644 --- a/pkg/utils/datetimes_test.go +++ b/pkg/utils/datetimes_test.go @@ -16,6 +16,20 @@ func TestParseNumericYearMonth(t *testing.T) { assert.Equal(t, expectedMonth, actualMonth) } +func TestFormatUnixTimeToLongDateTime(t *testing.T) { + unixTime := int64(1617228083) + utcTimezone := time.FixedZone("Test Timezone", 0) // UTC + utc8Timezone := time.FixedZone("Test Timezone", 28800) // UTC+8 + + expectedValue := "2021-03-31 22:01:23" + actualValue := FormatUnixTimeToLongDateTime(unixTime, utcTimezone) + assert.Equal(t, expectedValue, actualValue) + + expectedValue = "2021-04-01 06:01:23" + actualValue = FormatUnixTimeToLongDateTime(unixTime, utc8Timezone) + assert.Equal(t, expectedValue, actualValue) +} + func TestFormatUnixTimeToLongDateTimeWithoutSecond(t *testing.T) { unixTime := int64(1617228083) utcTimezone := time.FixedZone("Test Timezone", 0) // UTC