From 8f0e6ba95a9c8fdcff1d27536eea281f931fcb7b Mon Sep 17 00:00:00 2001 From: MaysWind Date: Fri, 20 Jun 2025 00:56:57 +0800 Subject: [PATCH] support two-digit years in the transaction date when importing QIF file --- ...qif_transaction_data_file_importer_test.go | 38 +++++++++++++++++++ .../qif/qif_transaction_data_table.go | 11 +----- 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/pkg/converters/qif/qif_transaction_data_file_importer_test.go b/pkg/converters/qif/qif_transaction_data_file_importer_test.go index 2535d6bc..bbec9fd4 100644 --- a/pkg/converters/qif/qif_transaction_data_file_importer_test.go +++ b/pkg/converters/qif/qif_transaction_data_file_importer_test.go @@ -226,6 +226,44 @@ func TestQIFTransactionDataFileParseImportedData_ParseDayYearMonthDateFormatTime assert.Equal(t, int64(1725494400), utils.GetUnixTimeFromTransactionTime(allNewTransactions[4].TransactionTime)) } +func TestQIFTransactionDataFileParseImportedData_ParseShortYearMonthDayDateFormatTime(t *testing.T) { + converter := QifYearMonthDayTransactionDataImporter + context := core.NewNullContext() + + user := &models.User{ + Uid: 1234567890, + DefaultCurrency: "CNY", + } + + allNewTransactions, _, _, _, _, _, err := converter.ParseImportedData(context, user, []byte( + "!Type:Bank\n"+ + "D24-09-01\n"+ + "T-123.45\n"+ + "^\n"+ + "D24-9-2\n"+ + "T-123.45\n"+ + "^\n"+ + "D24/9/3\n"+ + "T-123.45\n"+ + "^\n"+ + "D24.9.4\n"+ + "T-123.45\n"+ + "^\n"+ + "D24'9.5\n"+ + "T-123.45\n"+ + "^\n"), 0, nil, nil, nil, nil, nil) + + assert.Nil(t, err) + + assert.Equal(t, 5, len(allNewTransactions)) + + assert.Equal(t, int64(1725148800), utils.GetUnixTimeFromTransactionTime(allNewTransactions[0].TransactionTime)) + assert.Equal(t, int64(1725235200), utils.GetUnixTimeFromTransactionTime(allNewTransactions[1].TransactionTime)) + assert.Equal(t, int64(1725321600), utils.GetUnixTimeFromTransactionTime(allNewTransactions[2].TransactionTime)) + assert.Equal(t, int64(1725408000), utils.GetUnixTimeFromTransactionTime(allNewTransactions[3].TransactionTime)) + assert.Equal(t, int64(1725494400), utils.GetUnixTimeFromTransactionTime(allNewTransactions[4].TransactionTime)) +} + func TestQIFTransactionDataFileParseImportedData_ParseInvalidTime(t *testing.T) { converter := QifYearMonthDayTransactionDataImporter context := core.NewNullContext() diff --git a/pkg/converters/qif/qif_transaction_data_table.go b/pkg/converters/qif/qif_transaction_data_table.go index 73f7a271..500a6d61 100644 --- a/pkg/converters/qif/qif_transaction_data_table.go +++ b/pkg/converters/qif/qif_transaction_data_table.go @@ -1,7 +1,6 @@ package qif import ( - "fmt" "strings" "github.com/mayswind/ezbookkeeping/pkg/converters/datatable" @@ -223,15 +222,7 @@ func (t *qifTransactionDataRowIterator) parseTransactionTime(ctx core.Context, d return "", errs.ErrTransactionTimeInvalid } - if len(month) < 2 { - month = "0" + month - } - - if len(day) < 2 { - day = "0" + day - } - - return fmt.Sprintf("%s-%s-%s 00:00:00", year, month, day), nil + return utils.FormatYearMonthDayToLongDateTime(year, month, day) } func createNewQifTransactionDataTable(dateFormatType qifDateFormatType, qifData *qifData) (*qifTransactionDataTable, error) {