From 35ec18cfac8005ecba25d27d909a405baa0aedd1 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Sun, 20 Oct 2024 21:38:51 +0800 Subject: [PATCH] code refactor --- .../fireflyIII/fireflyiii_transaction_data_row_parser.go | 8 +++++++- pkg/utils/datetimes.go | 2 +- pkg/utils/datetimes_test.go | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pkg/converters/fireflyIII/fireflyiii_transaction_data_row_parser.go b/pkg/converters/fireflyIII/fireflyiii_transaction_data_row_parser.go index 227814d6..76eadbac 100644 --- a/pkg/converters/fireflyIII/fireflyiii_transaction_data_row_parser.go +++ b/pkg/converters/fireflyIII/fireflyiii_transaction_data_row_parser.go @@ -1,6 +1,8 @@ package fireflyIII import ( + "strings" + "github.com/mayswind/ezbookkeeping/pkg/converters/datatable" "github.com/mayswind/ezbookkeeping/pkg/errs" "github.com/mayswind/ezbookkeeping/pkg/models" @@ -30,7 +32,11 @@ func (p *fireflyIIITransactionDataRowParser) Parse(data map[datatable.Transactio // parse long date time and timezone if rowData[datatable.TRANSACTION_DATA_TABLE_TRANSACTION_TIME] != "" { - dateTime, err := utils.ParseFromLongDateTimeWithTimezone(rowData[datatable.TRANSACTION_DATA_TABLE_TRANSACTION_TIME]) + if strings.Index(rowData[datatable.TRANSACTION_DATA_TABLE_TRANSACTION_TIME], "T") <= 0 { + return nil, false, errs.ErrTransactionTimeInvalid + } + + dateTime, err := utils.ParseFromLongDateTimeWithTimezone(strings.ReplaceAll(rowData[datatable.TRANSACTION_DATA_TABLE_TRANSACTION_TIME], "T", " ")) if err != nil { return nil, false, errs.ErrTransactionTimeInvalid diff --git a/pkg/utils/datetimes.go b/pkg/utils/datetimes.go index 15b864cc..5a8769a6 100644 --- a/pkg/utils/datetimes.go +++ b/pkg/utils/datetimes.go @@ -10,7 +10,7 @@ import ( const ( longDateTimeFormat = "2006-01-02 15:04:05" - longDateTimeWithTimezoneFormat = "2006-01-02T15:04:05Z07:00" + longDateTimeWithTimezoneFormat = "2006-01-02 15:04:05Z07:00" longDateTimeWithoutSecondFormat = "2006-01-02 15:04" shortDateTimeFormat = "2006-1-2 15:4:5" yearMonthDateTimeFormat = "2006-01" diff --git a/pkg/utils/datetimes_test.go b/pkg/utils/datetimes_test.go index dda1c035..d923801c 100644 --- a/pkg/utils/datetimes_test.go +++ b/pkg/utils/datetimes_test.go @@ -133,7 +133,7 @@ func TestParseFromLongDateTime(t *testing.T) { func TestParseFromLongDateTimeWithTimezone(t *testing.T) { expectedValue := int64(1617238883) - actualTime, err := ParseFromLongDateTimeWithTimezone("2021-04-01T06:01:23+05:00") + actualTime, err := ParseFromLongDateTimeWithTimezone("2021-04-01 06:01:23+05:00") assert.Equal(t, nil, err) actualValue := actualTime.Unix()