fix(server): person birthdate timezone bug (#31906)

fix(server): person birthdate timezone bug (#31901)

(cherry picked from commit 4b1b1f8c2a)

Co-authored-by: Jason Rasmussen <jason@rasm.me>
This commit is contained in:
immich-push-o-matic[bot]
2026-09-29 17:06:59 +00:00
committed by GitHub
co-authored by Jason Rasmussen
parent d9371946eb
commit f3abf9fa40
2 changed files with 15 additions and 7 deletions
+14 -6
View File
@@ -1,7 +1,11 @@
import { describe, expect, it } from 'vitest'; import { afterEach, describe, expect, it, vi } from 'vitest';
import { asDateString, asDateTimeString, isLeapDayObserved } from 'src/utils/date.js'; import { asDateString, asDateTimeString, isLeapDayObserved } from 'src/utils/date.js';
describe('asDateString', () => { describe('asDateString', () => {
afterEach(() => {
vi.unstubAllEnvs();
});
it('should return null for null input', () => { it('should return null for null input', () => {
expect(asDateString(null)).toBeNull(); expect(asDateString(null)).toBeNull();
}); });
@@ -10,13 +14,17 @@ describe('asDateString', () => {
expect(asDateString('2000-01-15')).toBe('2000-01-15'); expect(asDateString('2000-01-15')).toBe('2000-01-15');
}); });
it('should return the local calendar date, not the UTC date', () => { // a `date` column is parsed as `new Date('YYYY-MM-DD')`, which is UTC midnight regardless of the server time zone
const date = new Date(2000, 0, 15); // 15 Jan 2000, local midnight it.each(['UTC', 'America/Los_Angeles', 'America/New_York', 'Europe/Istanbul', 'Pacific/Kiritimati'])(
expect(asDateString(date)).toBe('2000-01-15'); 'should return the UTC calendar date of a date column when the server time zone is %s',
}); (timeZone) => {
vi.stubEnv('TZ', timeZone);
expect(asDateString(new Date('2000-01-15'))).toBe('2000-01-15');
},
);
it('should correctly pad years with a leading 0', () => { it('should correctly pad years with a leading 0', () => {
expect(asDateString(new Date('280-12-12'))).toBe('0280-12-12'); expect(asDateString(new Date('0280-12-12'))).toBe('0280-12-12');
}); });
}); });
+1 -1
View File
@@ -171,7 +171,7 @@ export const isoDateToDate = z
z.date(), z.date(),
{ {
decode: (isoString) => new Date(isoString), decode: (isoString) => new Date(isoString),
encode: (date) => DateTime.fromJSDate(date).toFormat('yyyy-MM-dd'), encode: (date) => DateTime.fromJSDate(date, { zone: 'utc' }).toFormat('yyyy-MM-dd'),
}, },
) )
.meta({ example: '2024-01-01' }); .meta({ example: '2024-01-01' });