【问题标题】:Firefox doesn't work with new Date() with format like "Wed. October 28, 2015"Firefox 不适用于格式为“2015 年 10 月 28 日星期三”的 new Date()
【发布时间】:2015-06-11 09:13:19
【问题描述】:

这就是我所拥有的。

 date = testInfoSelect.testDate;
 console.log(date);
 date = new Date(date);
 console.log(date);
 date = $.datepicker.formatDate('mm/dd/yy', date);
 console.log(date);

这是 FF 中的控制台输出。

"Wed. February 24, 2016"
Invalid Date
"NaN/NaN/NaN"

这是 Chrome 中的控制台输出。

Wed. February 24, 2016
Wed Feb 24 2016 00:00:00 GMT-0500 (Eastern Standard Time)
02/24/2016

对于我的应用程序,我无法更改日期格式,即 testInfoSelect.testDate,在本例中为“Wed. February 24, 2016”。

我做了什么:

dateString 表示日期的字符串值。字符串应该在 Date.parse() 方法识别的格式(符合 IETF 的 RFC 2822 时间戳和 ISO8601 版本)。

MDN 文档中最相似的日期格式是这样的:

Date.parse('Wed, 09 Aug 1995 00:00:00 GMT');

在不改变“Wed. February 24, 2016”格式的情况下,我应该怎么做才能在FF中得到正确的结果

谢谢

【问题讨论】:

  • 这是一个 hack,但你可以做 date = date.replace(".", "") 并且它会起作用,期间搞砸了
  • 不是强迫你使用库,但你考虑过 moment.js 吗?它对日期操作非常有帮助 - 11.5k gz'd

标签: javascript jquery html cross-browser


【解决方案1】:

正如@adeno 所提到的,你可以:

new Date("Wed. February 24, 2016".replace('.', ''));

new Date("Wed. February 24, 2016".replace('.', ','));

在你的情况下:

new Date(date.replace('.', ''));

要获得 GMT 时间,您可以执行以下操作:

> new Date(date.replace('.', '') + " GMT");
< Date 2016-02-24T00:00:00.000Z

FF、Chrome 和 Opera 的结果:

火狐:

▶ new Date("Wed. February 24, 2016".replace('.', '') + " GMT");
⯇ Date 2016-02-24T00:00:00.000Z

铬:

 > new Date("Wed. February 24, 2016".replace('.', '') + " GMT");
<- Wed Feb 24 2016 01:00:00 GMT+0100 (CET)

歌剧:

>>> new Date("Wed. February 24, 2016".replace('.', '') + " GMT");
[+] Wed Feb 24 2016 01:00:00 GMT+0100 

【讨论】:

    猜你喜欢
    • 2017-03-13
    • 2013-07-06
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 2016-01-08
    • 2016-01-24
    相关资源
    最近更新 更多