我使用的API以类似YYYY-MM-DDTHH:MM:SS+0200
的格式返回日期。当我尝试创建一个Date
对象时,它通常是有效的:
new Date('2021-06-28T12:00:00+0200');
然而,一些使用旧版本Safari/iOS的用户抱怨说,他们得到了一些";无效日期";,我无法重新创建,因为我所有的设备都是最新的。
- 如何修复日期解析,使其在所有浏览器中都能工作?日期字符串不正确吗?解析是否不正确
- 我如何测试它是否真的存在?因为正如我所说,它似乎已经在我可以访问的所有设备上运行,但不幸的是,它没有在我无法访问的一些设备上运行
非常感谢!
我建议使用luxon这样的库来解析日期。它应该同时处理+hhmm
和+hh:mm
UTC偏移。
您可以解析为一个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>