Fix timestamp offset parsing

This commit is contained in:
Sam Becker 2026-01-11 18:28:40 -06:00
parent 95a7cc336e
commit 4e3fdc3c29
3 changed files with 5 additions and 9 deletions

View File

@ -43,6 +43,7 @@ export const convertExifToFormData = (
) => getCompatibleExifValue(key, exif, exifr, exifrSpecificKey);
const dateTimeOriginal = getExifValue('DateTimeOriginal');
const offset = getOffsetFromExif(exif, exifr);
return {
aspectRatio: getAspectRatioFromExif(exif).toString(),
@ -74,7 +75,7 @@ export const convertExifToFormData = (
...dateTimeOriginal && {
takenAt: convertTimestampWithOffsetToPostgresString(
dateTimeOriginal,
getOffsetFromExif(exif, exifr),
offset,
),
takenAtNaive:
convertTimestampToNaivePostgresString(dateTimeOriginal),

View File

@ -101,11 +101,8 @@ const dateFromTimestamp = (timestamp?: AmbiguousTimestamp): Date => {
? /.+Z/i.test(timestamp)
? new Date(timestamp)
: new Date(`${timestamp}Z`)
// Check for date last to avoid destabilizing status quo
: isDate(timestamp)
? timestamp
: undefined;
return date && !isNaN(date.getTime()) ? date : new Date();
: timestamp;
return isDate(date) ? date : new Date();
};
const createNaiveDateWithOffset = (

View File

@ -1,7 +1,5 @@
import { OrientationTypes, type ExifData, ExifTags } from 'ts-exif-parser';
const OFFSET_REGEX = /[+-]\d\d:\d\d/;
export const getCompatibleExifValue = (
key: keyof ExifTags,
exif: ExifData,
@ -11,7 +9,7 @@ export const getCompatibleExifValue = (
const isValueOffset = (value: any) =>
typeof value === 'string' &&
OFFSET_REGEX.test(value);
/^[+-]\d\d:\d\d$/.test(value);
export const getOffsetFromExif = (
exif: ExifData,