我在使用 CMS 时有点噩梦,它可以在没有时区的情况下保存日期时间。由于各种基础设施原因,我无法调整核心文件,我只能调整 CMS 字段本身的一些 javascript,而不包括外部库(或 dayjs UTC 插件)。
目前如何运作:
- CMS 像这样保存日期时间字符串:
2020-10-29 05:00
缺少时区 - 重新加载时,dayjs 将字符串解析
2020-10-29 05:00
为UTC
并根据浏览器区域设置更改时间。 - 如果您使用的浏览器不是 UTC,则显示的时间将与保存的字符串不对应
我的骇人听闻的想法:
- 加载字符串时,获取浏览器的时区
- 修改字符串
2020-10-29 05:00
以包含浏览器的时区,或偏移日期对象,以便在解析为“本地”时正确显示
我最初的想法只是在显示之前添加/减去偏移量,但它似乎仍然不起作用(我认为由于 getTimezoneOffset 没有针对夏令时进行调整?):
let date = new Date('2020-10-29 05:00')
console.log(new Date(date.setMinutes(date.getMinutes() + new Date().getTimezoneOffset())))
我想这个问题的另一种形式是:有没有办法解析一个UTC日期时间字符串,就好像它是本地的一样?