diff --git a/CHANGELOG.md b/CHANGELOG.md index 73e80139e..8d5ed2787 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the routes of the tabs +- Enforced a stricter date format in the activities import: `dd-MM-yyyy` instead of `dd-MM-yy` - Updated the URL of the Ghostfolio Slack channel - Removed the _Ghostfolio in Numbers_ section from the about page diff --git a/apps/client/src/app/services/import-activities.service.ts b/apps/client/src/app/services/import-activities.service.ts index 06d33456c..21ee38274 100644 --- a/apps/client/src/app/services/import-activities.service.ts +++ b/apps/client/src/app/services/import-activities.service.ts @@ -223,11 +223,17 @@ export class ImportActivitiesService { for (const key of ImportActivitiesService.DATE_KEYS) { if (item[key]) { - if (isMatch(item[key], 'dd-MM-yyyy')) { + if (isMatch(item[key], 'dd-MM-yyyy') && item[key].length === '10') { + // Check length to only match yyyy (and not yy) date = parse(item[key], 'dd-MM-yyyy', new Date()).toISOString(); - } else if (isMatch(item[key], 'dd/MM/yyyy')) { + } else if ( + isMatch(item[key], 'dd/MM/yyyy') && + item[key].length === '10' + ) { + // Check length to only match yyyy (and not yy) date = parse(item[key], 'dd/MM/yyyy', new Date()).toISOString(); - } else if (isMatch(item[key], 'yyyyMMdd')) { + } else if (isMatch(item[key], 'yyyyMMdd') && item[key].length === '8') { + // Check length to only match yyyy (and not yy) date = parse(item[key], 'yyyyMMdd', new Date()).toISOString(); } else { try { diff --git a/test/import/invalid-date-yy.csv b/test/import/invalid-date-yy.csv new file mode 100644 index 000000000..4bfa891e5 --- /dev/null +++ b/test/import/invalid-date-yy.csv @@ -0,0 +1,2 @@ +Date,Code,Currency,Price,Quantity,Action,Fee +16/09/21,MSFT,USD,298.580,5,buy,19.00