卫生-如何正确设置时区?

时间:2019-05-24 16:16:35

标签: localization sanity l10n.js

我为类型为datetime的事件设置了日期和时间,但是其表示形式偏斜-2h。

我想这与datetime的ha javascript l10n有关。

您能帮我保持正确的位置吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

在健全性后端中,所有datetime values都存储为UTC。

例如happensOn: '2019-05-17T21:05:00.000Z'

但是,输入字段呈现的时间戳是从浏览器timzone中看到的。因此,如果您的浏览器时区在世界标准时间之后2个小时,则2019-06-29T19:00:00.000Z将呈现为2019-06-29 21:00

在您的情况下,如果您希望Program文档使用浏览器的本地时间而不是UTC值到preview,则可以通过获取存储的UTC值并创建本地化的字符串表示形式来覆盖预览。 date-fns可能会有所帮助:

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

然后您可以在文档的preview中使用stringToDisplay

我绝对可以看到此行为是意外的,但是我不确定100%是最佳/正确的行为。任何建议,不胜感激!