Sanitity - Как правильно установить часовые пояса? - PullRequest
1 голос
/ 24 мая 2019

Я установил дату и время для события с типом datetime, однако его представление перекошено на 2 часа.

Я предполагаю, что это связано с ha javascript l10n datetime.

Не могли бы вы помочь мне сохранить правильное согласие?

enter image description here

1 Ответ

1 голос
/ 24 мая 2019

В бэкэнде Sanity все значения datetime хранятся как UTC.

Например, happensAt: '2019-05-17T21:05:00.000Z'.

Однако поле ввода отображает метку времени, как видно избраузеры тимзона.Поэтому, если часовой пояс вашего браузера составляет 2 часа после UTC, 2019-06-29T19:00:00.000Z будет отображаться как 2019-06-29 21:00.

В вашем случае, если вы хотите, чтобы документ Program имел предварительный просмотр с браузерамипо местному времени вместо значения UTC вы можете переопределить предварительный просмотр, используя сохраненное значение UTC и создавая локализованное строковое представление. date-fns может помочь:

const format = require('date-fns/format')
const utcDate = program.happensAt // '2019-05-17T21:05:00.000Z'
const stringToDisplay = format(new Date(utcDate), "HH:mm") // '23:05'

Затем вы можете использовать stringToDisplay в превью вашего документа.

IЯ абсолютно понимаю, что это поведение неожиданно, но я не уверен на 100%, что такое оптимальное / правильное поведение.Любые предложения с благодарностью!

...