【问题标题】:Sanity - How to set timezones correctly?理智 - 如何正确设置时区?
【发布时间】:2023-03-21 09:58:01
【问题描述】:

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

我想这与日期时间的 ha javascript l10n 有关。

你能帮我保持正确的一致性吗?

【问题讨论】:

  • 如果您的问题已回答,请将其标记为已回答?

标签: localization sanity l10n.js


【解决方案1】:

在 Sanity 后端,所有 datetime values 都存储为 UTC。

例如happensAt: '2019-05-17T21:05:00.000Z'.

但是,输入字段会呈现从浏览器 timzone 看到的时间戳。因此,如果您的浏览器时区比 UTC 晚 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 = program.happensAt // '2019-05-17T21:05:00.000Z'
const stringToDisplay = format(new Date(utcDate), "HH:mm") // '23:05'

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

我绝对可以看到这种行为是出乎意料的,但我不能 100% 确定最佳/正确的行为是什么。任何建议都非常感谢!

【讨论】:

    猜你喜欢
    • 2012-01-16
    • 2023-04-03
    • 2020-10-17
    • 2020-10-17
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    相关资源
    最近更新 更多