From 89bf9929e44dea6ce270969aee053a4be2009f96 Mon Sep 17 00:00:00 2001 From: "Patrik J. Braun" Date: Tue, 21 Oct 2025 20:45:37 +0200 Subject: [PATCH] Fix creation date reading for heic files. #965 --- src/backend/model/fileaccess/MetadataLoader.ts | 13 +++++++++---- test/backend/assets/orientation/IMG_0307.json | 3 ++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/backend/model/fileaccess/MetadataLoader.ts b/src/backend/model/fileaccess/MetadataLoader.ts index e481c052..73dab6ce 100644 --- a/src/backend/model/fileaccess/MetadataLoader.ts +++ b/src/backend/model/fileaccess/MetadataLoader.ts @@ -641,19 +641,24 @@ export class MetadataLoader { result.ifd0 = {...exif.Image}; // Convert Date objects to ISO strings for consistency with exifr if (result.ifd0.DateTime instanceof Date) { - result.ifd0.DateTime = result.ifd0.DateTime.toISOString(); + // Remove the 'Z' suffix and format as YYYY-MM-DD HH:MM:SS + const isoString = result.ifd0.DateTime.toISOString(); + result.ifd0.DateTime = isoString.substring(0, 10) + ' ' + isoString.substring(11, 19); } } // Map Photo tags to exif (this is where exifr puts EXIF data) if (exif.Photo) { result.exif = {...exif.Photo}; - // Convert Date objects to ISO strings + // Convert Date objects to ISO strings without 'Z' suffix, format as YYYY-MM-DD HH:MM:SS + // The offset will be added from OffsetTimeOriginal/OffsetTimeDigitized by mapTimestampAndOffset if (result.exif.DateTimeOriginal instanceof Date) { - result.exif.DateTimeOriginal = result.exif.DateTimeOriginal.toISOString(); + const isoString = result.exif.DateTimeOriginal.toISOString(); + result.exif.DateTimeOriginal = isoString.substring(0, 10) + ' ' + isoString.substring(11, 19); } if (result.exif.DateTimeDigitized instanceof Date) { - result.exif.DateTimeDigitized = result.exif.DateTimeDigitized.toISOString(); + const isoString = result.exif.DateTimeDigitized.toISOString(); + result.exif.DateTimeDigitized = isoString.substring(0, 10) + ' ' + isoString.substring(11, 19); } } diff --git a/test/backend/assets/orientation/IMG_0307.json b/test/backend/assets/orientation/IMG_0307.json index 1b35f7d1..5a21d390 100644 --- a/test/backend/assets/orientation/IMG_0307.json +++ b/test/backend/assets/orientation/IMG_0307.json @@ -7,7 +7,8 @@ "make": "Apple", "model": "iPhone 16 Pro Max" }, - "creationDate": 1757327744000, + "creationDate": 1735831555000, + "creationDateOffset": "-05:00", "fileSize": 3946347, "positionData": { "GPSData": {