【问题标题】:Javascript String to Date works in Chrome, not FF or SafariJavascript String to Date 适用于 Chrome,不适用于 FF 或 Safari
【发布时间】:2015-02-01 16:49:10
【问题描述】:

我有一个元素以这种格式显示日期字符串: <div> ListDate: 2014-11-22 00:00:00.0 </div> 我有一个捕获该文本的变量,现在我正在剥离除日期字符串之外的所有内容并尝试将其转换为日期,以便我可以对其进行一些数学运算。我的代码在 Chrome 中运行良好,但在 FF 和 Safari 中总是返回 NaN。这是javascript:

var listDate = " ListDate: 2014-11-22 00:00:00.0 ";
listDate = listDate.replace('ListDate:', '');
listDate = $.trim(listDate);
listDate = Date.parse(listDate);

我在 Firebug 中观看它,它在 Date.parse() 之前一直按预期执行。我尝试了this thread 上显示的解决方案,但仍然没有运气。有任何想法吗?我无法控制 html,它来自网络服务。

【问题讨论】:

  • 完整的 ISO8601 格式 (IIRC) 在该字符串的日期和时间部分之间需要一个大写字母“T”。
  • 太棒了!我在我的修剪方法之后添加了.replace(' ','T'),她就像一个魅力。谢谢!
  • 太棒了!...我会将此编码为答案,但我正在使用 iPhone 开会:-(
  • @scunliffe,您应该将您的评论移到 Gary D 接受的答案中!

标签: javascript date firefox safari


【解决方案1】:

完整的 ISO8601 格式 (IIRC) 在该字符串的日期和时间部分之间需要一个大写字母“T”,例如""2014-11-22T00:00:00.0"" https://en.wikipedia.org/wiki/ISO_8601(因此我建议始终添加 T 分隔符。

例如以下代码在某些浏览器中会解析为 NaN

var myAlmostISODate = "2014-11-22 00:00:00.0";
console.log("Date: " + Date.parse(myAlmostISODate));
//IE11: NaN
//Firefox: 1416632400000
//Chrome: 1416632400000

【讨论】:

    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 2017-06-03
    • 2023-04-05
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多