diff --git a/packages/form-core/src/utils.ts b/packages/form-core/src/utils.ts index 3b0186e35..dd5476d40 100644 --- a/packages/form-core/src/utils.ts +++ b/packages/form-core/src/utils.ts @@ -431,6 +431,10 @@ export function evaluate(objA: T, objB: T) { return false } + if (objA instanceof Date && objB instanceof Date) { + return objA.getTime() === objB.getTime() + } + if (objA instanceof Map && objB instanceof Map) { if (objA.size !== objB.size) return false for (const [k, v] of objA) { diff --git a/packages/form-core/tests/utils.spec.ts b/packages/form-core/tests/utils.spec.ts index 08966f330..b97316648 100644 --- a/packages/form-core/tests/utils.spec.ts +++ b/packages/form-core/tests/utils.spec.ts @@ -648,6 +648,24 @@ describe('evaluate', () => { ) expect(objComplexTrue).toEqual(true) }) + + it('should test equality between Date objects', () => { + const date1 = new Date('2025-01-01T00:00:00.000Z') + const date2 = new Date('2025-01-01T00:00:00.000Z') + const date3 = new Date('2025-01-02T00:00:00.000Z') + + const dateTrue = evaluate(date1, date2) + expect(dateTrue).toEqual(true) + + const dateFalse = evaluate(date1, date3) + expect(dateFalse).toEqual(false) + + const dateObjectTrue = evaluate({ date: date1 }, { date: date2 }) + expect(dateObjectTrue).toEqual(true) + + const dateObjectFalse = evaluate({ date: date1 }, { date: date3 }) + expect(dateObjectFalse).toEqual(false) + }) }) describe('concatenatePaths', () => {