localization - 理智 - 如何正确设置时区?
解决方案
在 Sanity 后端,所有日期时间值都存储为 UTC。
例如happensAt: '2019-05-17T21:05:00.000Z'
。
但是,输入字段呈现从浏览器 timzone 看到的时间戳。因此,如果您的浏览器时区比 UTC 晚 2 小时,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
的预览中使用。
我绝对可以看到这种行为是出乎意料的,但我不能 100% 确定最佳/正确的行为是什么。任何建议都非常感谢!
推荐阅读
- vue.js - Babel 错误:当我尝试使用 Laravel Mix 编译前端资产时,模块构建失败
- python - 如何确定数据框列是否包含特定列表,与其顺序无关?
- excel - 为日期范围创建 CUBESET
- vba - 插入查询/选择查询在访问中有效,但在 vba 中无效
- ruby - Initialize 中的参数数量错误(给定 0,预期为 1)
- quarkus - 更新到最新版本时 Quarkus 无法找到 CDIProvider
- python - 如何解决 tensorflow 2 中 CTC 丢失的“找不到有效设备”问题?
- c++11 - 调用此方法的正确方法是什么?
- asp.net-core - 如何在同一视图中显示来自多个实体的数据并按其中一个实体对它们进行分组
- vue.js - 为什么 vue ui / npm 不允许我将某些软件包更新到最新版本?