使用不同浏览器的 JavaScript 中的日期格式问题

IT技术 javascript datetime date-format date-parsing
2021-02-23 19:58:31

我正在处理 RSS 提要中的日期,但在 IE、Chrome 和 Firefox 中使用以下代码时发现不同的结果:

new Date('2001-01-01T12:00:00Z')

Firefox 对此很满意,但 Chrome 和 IE 返回无效日期。

我想我会尝试替换 T 和 Z 如下:

new Date('2001-01-01 12:00:00')

这一次 Chrome 对此很满意,但 Firefox 和 IE 返回无效日期。

任何想法我应该怎么做才能在所有浏览器中使用这种格式获取日期对象?!

非常感谢,蒂姆

4个回答

这适用于我机器上的所有浏览器 - 在控制台中尝试:

alert(new Date('2001/01/31 12:00:00'))

所以

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/[T|Z]/g,' '))

IE8、FF3.6、Safari4、Chrome

你说得对,这很有效,而且比我的更好。
2021-04-19 19:58:31
如何在带时区的 FF 上进行这项工作?因为这new Date('2001-01-01T12:00:00+1000'.replace(/\-/g,'\/').replace(/[T|Z]/g,' '))在 FF 中返回无效日期,但在 IE/Chrome 中有效
2021-04-21 19:58:31
非常感谢!在 IE、FF、Chrome 和 Opera 中为我测试和工作!
2021-05-10 19:58:31
new Date('2001-01-01T12:00:00+1000') 在 Fx、Chrome 中工作正常
2021-05-11 19:58:31

您也可以尝试使用Date.js - 一个开源的 javascript 日期操作库。

此外,momentjs (www.momentjs.com) 也解决了浏览器的差异。
2021-05-02 19:58:31

你能试一下吗:

new Date(2001,0,1,12,0,0)

这意味着:

new Date(year,month,day,hour,minutes,seconds) 
你的意思是 new Date(2001,0,1,12,0,0) 因为 JS 月份从 0 开始
2021-04-29 19:58:31
小心前导 0。08 和 09 是无效的八进制数
2021-04-30 19:58:31

这适用于所有主要 5 浏览器,并导致所有浏览器将时间识别为 GMT/UTC 而不是本地时间(Z 后缀表示时间是 UTC):

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/T/,' ').replace(/Z/,' -0'))

我感谢 mplungjan 的回答。