首页 > 解决方案 > 使用 JavaScript 格式化 UTC 日期在 Safari 中不起作用

问题描述

我目前正在尝试将 DB UTC 时间戳格式化为本地时区。为此,我正在尝试:

new Date( "2020-03-13 18:40:45 UTC".replace( /\s/, 'T' ) ) 

首先我有这个:

new Date( "2020-03-13 18:40:45 UTC" ) 

它适用于 Chrome 和 Firefox,但不适用于 Safari。所以我做了一些研究并想出了替换。由于我的替换,我现在Invalid Date在每个浏览器中都得到了。我现在知道为什么......我能做些什么来解决这个问题?

标签: javascript

解决方案


确保您的字符串采用官方支持的格式,因为其他任何内容都回退到“......任何特定于实现的启发式或特定于实现的日期格式”。

空格必须是T,并且前面UTC必须没有空格。Z(这里不需要正则表达式。)

new Date("2020-03-13 18:40:45 UTC".replace(" ", "T").replace(" UTC", "Z"))

现场示例:

const dt = new Date("2020-03-13 18:40:45 UTC".replace(" ", "T").replace(" UTC", "Z"));
console.log(dt.toISOString());

似乎 Chrome 和 Firefox 具有特定于实现的启发式/格式,这将使他们接受空格和 UTC,但不接受 T 和 UTC。:-)


推荐阅读