From 5623b73deebf0479423a9ada5d64812bffb9b6aa Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 30 Oct 2022 13:34:33 -0700 Subject: [PATCH] fix datetime-local timezone offset --- src/date.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/date.js b/src/date.js index f810be3..1f73dbf 100644 --- a/src/date.js +++ b/src/date.js @@ -69,8 +69,11 @@ function formatDate(value) { : value; } +// The datetime-local input uses YYYY-MM-DDThh:mm like ISO 8601, but in local +// time rather than UTC, so we apply the offset before calling toISOString. +// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local function formatDatetime(value) { return (value = coerce(value)) - ? value.toISOString().slice(0, 16) + ? (new Date(+value - value.getTimezoneOffset() * 1000 * 60)).toISOString().slice(0, 16) : value; }