date.js .parse() 不适用于ISO8601时区偏移量

date.js .parse() Not Working With ISO8601 Time Zone Offset

本文关键字:适用于 ISO8601 时区 偏移量 不适用 js parse date      更新时间:2023-09-26

我正在研究一些带有日期的JavaScript.js。

var event_schedule_datetime = data.events[i].schedule[0].datetime;
var event_schedule_datetime_readable = Date.parse(event_schedule_datetime).toString('dddd, MMMM d, yyyy @ h:mm tt');

event_schedule_datetime采用ISO8601格式 (2013-11-03T09:00:00+01:00)。 我以为那个日期.js能够解释这种格式,但我不断得到Unable to get property 'toString' of undefined or null reference. 如果我用2013-11-01T18:00:00+01:00替换event_schedule_datetime也会发生同样的事情.

我知道该变量具有正确的数据,因为它在另一个地方被引用并导致<time datetime="2013-11-01T18:00:00+01:00">2013-11-01T18:00:00+01:00</time>. 基本上,我试图给观众一个人类可读的日期和时间。

我还发现删除时区偏移量确实有效。

var event_schedule_datetime_readable = Date.parse(event_schedule_datetime.substring(0, 19)).toString('dddd, MMMM d, yyyy @ h:mm tt');

因此,似乎日期.js在使用ISO8601时不喜欢偏移量。 这是对的吗?

看起来本机 Date 对象可以处理这个问题:

控制台输出:

> new Date('2013-11-03T09:00:00+01:00')
Sun Nov 03 2013 03:00:00 GMT-0500 (EST)
> new Date('2013-11-03T09:00:00+01:00').toISOString()
"2013-11-03T08:00:00.000Z"