【问题标题】:Error while converting date string to Date object in Firefox [duplicate]在 Firefox 中将日期字符串转换为日期对象时出错 [重复]
【发布时间】:2014-03-25 22:01:18
【问题描述】:

我正在将一个简单的 dateString 转换为 Date 对象。以下代码可在除 Firefox 之外的所有浏览器上完美运行。

var dateString = "02-24-2014 09:22:21 AM";

var dateObject = new Date(dateString);

console.log(dateObject.toDateString());

Firefox 中的 Firebug 控制台显示 Invalid Date。我在这里做错了什么?

我也尝试将- 替换为\,但没有帮助。

是否可以在不使用任何库的情况下做到这一点?

【问题讨论】:

  • 为什么投反对票? @Daksh:实际上是可能的,我在这里工作:jsfiddle.net/rdesai/cTcNK/4
  • 顺便说一句,我没有投反对票,但它可能与我给出的链接重复,它有同样的问题,也有答案
  • 请在下面找到我的答案。它适用于所有浏览器,包括 Firefox。
  • 啊,我明白你在说什么了 :)

标签: javascript


【解决方案1】:

我会建议你使用,

http://momentjs.com/

moment.js jQuery api。它适用于所有浏览器。 有很多方法可以完成相同的任务。但最简单的方法是添加 moment.js。

 var dateString=moment('date as string').toDate();

http://jsfiddle.net/cTcNK/5/

【讨论】:

  • 那将是我最后的选择。
  • 是的。 . .有很多选择。
  • 它比手动执行正则表达式更容易。
【解决方案2】:

我建议您使用 ISO8601 (http://en.wikipedia.org/wiki/ISO_8601) 格式:YYYY-MM-DD 或 YYYY-MM-DDTHH:MM:SS。

所以:new Date('2014-02-24T09:22:21')

如果字符串是固定的......然后将其拆分并使用 Date 构造函数,例如

new Date('2014', '02' - 1, '24', '09', '22', '21')

【讨论】:

  • 不,格式是固定的,就像问题一样。
  • 检查更新的答案。
【解决方案3】:

试试:var dateString = "02/24/2014 09:22:21 AM"

dd-mm-yyyy 不是 EcmaScript 中的标准日期格式。有些浏览器实现了它,有些则没有。

您尝试将连字符替换为斜线,但您需要将它们替换为斜线。

如果带有连字符的日期来自您的服务器或您可以使用replace 方法和正则表达式替换它们:

var dateString = "02-24-2014 09:22:21 AM";
dateString = dateString.replace(/-/g, '/');

【讨论】:

    【解决方案4】:

    看起来 Firefox 不喜欢 dateString 中的 -

    使用正则表达式将所有出现的- 替换为/,然后将字符串转换为Date 对象。

    var str = '02-24-2014 09:22:21 AM';
    
    str = str.replace(/-/g,'/');  // replaces all occurances of "-" with "/"
    
    var dateObject = new Date(str);
    
    alert(dateObject.toDateString());

    【讨论】:

    • 非常感谢。我花了几个小时才找到我遇到的问题的答案。在这里进行了大量的谷歌搜索和搜索,终于解决了:) 声誉++
    • 这是救命稻草
    • 工作就像一个魅力。谢谢大佬。
    • 伙计,你拯救了这一天。非常感谢!
    • 见鬼,这玩意其实对我有用,在 IE、CHROME、FIREFOX 中
    【解决方案5】:

    请试试这个:

    var dateString = "02-24-2014 09:22:21 AM";

    var dateObject = new Date();

    dateObject.toDateString(dateString);

    【讨论】:

    • 我认为这是一个非常干净的答案。 +1
    • 它在 ie 中不起作用
    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2020-05-21
    • 2020-11-30
    • 1970-01-01
    相关资源
    最近更新 更多