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

View File

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

View File

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