From fca0a688b690824e17a0513a2c212d0235ab6c4a Mon Sep 17 00:00:00 2001 From: Mitchell Date: Fri, 28 Oct 2022 11:26:19 +0200 Subject: [PATCH] parse csv date in ISO format (#1303) * Handle various date formats * Update changelog Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + .../app/services/import-transactions.service.ts | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79169e6a0..18edf5479 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added support for translated labels of asset and asset sub class +- Added support for dates in _ISO 8601_ date format (`YYYY-MM-DD`) in the activities import ### Fixed diff --git a/apps/client/src/app/services/import-transactions.service.ts b/apps/client/src/app/services/import-transactions.service.ts index 1d5670a32..6a88bb279 100644 --- a/apps/client/src/app/services/import-transactions.service.ts +++ b/apps/client/src/app/services/import-transactions.service.ts @@ -2,7 +2,7 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; import { Account, DataSource, Type } from '@prisma/client'; -import { parse } from 'date-fns'; +import { isMatch, parse, parseISO } from 'date-fns'; import { isFinite } from 'lodash'; import { parse as csvToJson } from 'papaparse'; import { EMPTY } from 'rxjs'; @@ -153,13 +153,15 @@ export class ImportTransactionsService { for (const key of ImportTransactionsService.DATE_KEYS) { if (item[key]) { - try { + if (isMatch(item[key], 'dd-MM-yyyy')) { date = parse(item[key], 'dd-MM-yyyy', new Date()).toISOString(); - } catch {} - - try { + } else if (isMatch(item[key], 'dd/MM/yyyy')) { date = parse(item[key], 'dd/MM/yyyy', new Date()).toISOString(); - } catch {} + } else { + try { + date = parseISO(item[key]).toISOString(); + } catch {} + } if (date) { return date;