Safari 在解析 YYYY-MM-DDTHH:MM:SS+0000 ISO 时间字符串时返回"invalid date"



我使用的API以类似YYYY-MM-DDTHH:MM:SS+0200的格式返回日期。当我尝试创建一个Date对象时,它通常是有效的:

new Date('2021-06-28T12:00:00+0200');

然而,一些使用旧版本Safari/iOS的用户抱怨说,他们得到了一些";无效日期";,我无法重新创建,因为我所有的设备都是最新的。

  1. 如何修复日期解析,使其在所有浏览器中都能工作?日期字符串不正确吗?解析是否不正确
  2. 我如何测试它是否真的存在?因为正如我所说,它似乎已经在我可以访问的所有设备上运行,但不幸的是,它没有在我无法访问的一些设备上运行

非常感谢!

我建议使用luxon这样的库来解析日期。它应该同时处理+hhmm+hh:mmUTC偏移。

您可以解析为一个luxon DateTime,然后简单地调用.toJSDate()来获得一个Date,这应该意味着代码更改最少:

let { DateTime } = luxon;
console.log("Using +hhmm UTC offset:");
let input = '2021-06-28T12:00:00+0200';
let d = (DateTime.fromISO(input));
console.log('Input:', input)
console.log('toJSDate:', d.toJSDate())
console.log('ISO time (Local):', d.toISO())
console.log("nUsing +hh:mm UTC offset:");
input = '2021-06-28T12:00:00+02:00';
d = (DateTime.fromISO(input));
console.log('Input:', input)
console.log('toJSDate:', d.toJSDate())
console.log('ISO time (Local):', d.toISO())
<script src="https://moment.github.io/luxon/global/luxon.js"></script>

相关内容

  • 没有找到相关文章

最新更新