diff --git a/packages/input-date/src/LionInputDate.js b/packages/input-date/src/LionInputDate.js index 78f73f639..dcaab505d 100644 --- a/packages/input-date/src/LionInputDate.js +++ b/packages/input-date/src/LionInputDate.js @@ -1,5 +1,5 @@ -import { LocalizeMixin, formatDate, parseDate } from '@lion/localize'; import { LionInput } from '@lion/input'; +import { formatDate, LocalizeMixin, parseDate } from '@lion/localize'; import { IsDate } from '@lion/validate'; /** @@ -41,7 +41,10 @@ export class LionInputDate extends LocalizeMixin(LionInput) { if (!(modelValue instanceof Date)) { return ''; } - return modelValue.toISOString().slice(0, 10); + // modelValue is localized, so we take the timezone offset in milliseconds and subtract it + // before converting it to ISO string + const offset = modelValue.getTimezoneOffset() * 60000; + return new Date(modelValue - offset).toISOString().slice(0, 10); } // eslint-disable-next-line class-methods-use-this diff --git a/packages/input-date/test/lion-input-date.test.js b/packages/input-date/test/lion-input-date.test.js index c31f897ff..be98dcc40 100644 --- a/packages/input-date/test/lion-input-date.test.js +++ b/packages/input-date/test/lion-input-date.test.js @@ -141,9 +141,9 @@ describe('', () => { it('serializes to iso format', async () => { const el = await fixture( html` - + `, ); - expect(el.serializedValue).to.equal('2000-12-12'); + expect(el.serializedValue).to.equal('2000-12-15'); }); });