diff --git a/apps/server/src/services/date_utils.ts b/apps/server/src/services/date_utils.ts index 33f0ff197..89b39f456 100644 --- a/apps/server/src/services/date_utils.ts +++ b/apps/server/src/services/date_utils.ts @@ -91,9 +91,12 @@ function validateUtcDateTime(str: string | undefined) { } export default { + LOCAL_DATETIME_FORMAT, + UTC_DATETIME_FORMAT, utcNowDateTime, localNowDateTime, localNowDate, + utcDateStr, utcDateTimeStr, parseDateTime, diff --git a/apps/server/src/services/import/enex.ts b/apps/server/src/services/import/enex.ts index 5a13e0960..94104104a 100644 --- a/apps/server/src/services/import/enex.ts +++ b/apps/server/src/services/import/enex.ts @@ -1,8 +1,10 @@ +import dayjs from "dayjs"; import sax from "sax"; import stream from "stream"; import { Throttle } from "stream-throttle"; import log from "../log.js"; import { md5, escapeHtml, fromBase64 } from "../utils.js"; +import date_utils from "../date_utils.js"; import sql from "../sql.js"; import noteService from "../notes.js"; import imageService from "../image.js"; @@ -235,6 +237,8 @@ function importEnex(taskContext: TaskContext<"importNotes">, file: File, parentN function updateDates(note: BNote, utcDateCreated?: string, utcDateModified?: string) { // it's difficult to force custom dateCreated and dateModified to Note entity, so we do it post-creation with SQL + const dateCreated = formatDateTimeToLocalDbFormat(utcDateCreated, false); + const dateModified = formatDateTimeToLocalDbFormat(utcDateModified, false); sql.execute( ` UPDATE notes @@ -243,7 +247,7 @@ function importEnex(taskContext: TaskContext<"importNotes">, file: File, parentN dateModified = ?, utcDateModified = ? WHERE noteId = ?`, - [utcDateCreated, utcDateCreated, utcDateModified, utcDateModified, note.noteId] + [dateCreated, utcDateCreated, dateModified, utcDateModified, note.noteId] ); sql.execute( @@ -407,4 +411,21 @@ function importEnex(taskContext: TaskContext<"importNotes">, file: File, parentN }); } +function formatDateTimeToLocalDbFormat( + utcDateFromEnex: Date | string | null | undefined, + keepUtc: boolean +): string | undefined { + if (!utcDateFromEnex) { + return undefined; + } + + const parsedDate = dayjs(utcDateFromEnex); + + if (!parsedDate.isValid()) { + return undefined; + } + + return (keepUtc ? parsedDate.utc() : parsedDate).format(date_utils.LOCAL_DATETIME_FORMAT); +} + export default { importEnex };