【问题标题】:How can I convert this string to a Javascript date in both Chrome and Firefox?如何在 Chrome 和 Firefox 中将此字符串转换为 Javascript 日期?
【发布时间】:2016-07-18 22:31:07
【问题描述】:

我在 Javascript 中有一个字符串:'2008-03-09 18:02:29 UTC' 我想将其转换为日期对象。所以我做了以下事情:

> new Date('2008-03-09 18:02:29 UTC')

这在 Google Chrome(版本 49.0.2623.87,64 位)中运行良好:

> new Date('2008-03-09 18:02:29 UTC');
Sun Mar 09 2008 14:02:29 GMT-0400 (EDT)

但是当我在 Firefox(45.0.1 版)中做同样的想法时,它失败了:

> new Date('2008-03-09 18:02:29 UTC');
Invalid Date

是否有一些我可以编写的代码可以在两种浏览器中正确执行此转换?

【问题讨论】:

标签: javascript google-chrome firefox


【解决方案1】:

使用连字符 (-) 代替斜杠 (/) 在 WebKit 浏览器中有效,但在 IE 或 FF 中无效。当心 YYYY-MM-DD 的 UTC 解析!

http://dygraphs.com/date-formats.html

编辑:正如其他答案所提到的,moment 是这类东西的一个很好的库。

【讨论】:

  • 这行得通吗?新日期('2008-03-09 18:02:29 UTC'.replace(/-/g, "/"));
【解决方案2】:

您听说过 moment.js 吗?请看Moment.js

你可以这样解决这个问题:

moment('2008-03-09 18:02:29 UTC')

如果你想要 Date 对象,你可以使用这个:

moment('2008-03-09 18:02:29 UTC').toDate()

【讨论】:

  • @Omarjmh 现在呢?如果有效,为什么它应该是评论?
  • @Omarjmh 你是对的,谢谢你的提示。这使我们在接下来的回答中有所改进。
【解决方案3】:

如果您可以将库添加到您的 UI,请尝试使用 moment.js (http://momentjs.com/docs/#/parsing/special-formats/)。

您甚至可以指定自定义格式。

更新:

试试这个:

moment.utc("2008-03-09 18:02:29 UTC", "YYYY-MM-DD HH:mm:ss");

我在 Chrome 和 Firefox 中都试过了,效果很好。 请记住,如果您不使用 .utc(),则时间获取您的时区,而不是 UTC。

【讨论】:

  • 对反对者,至少解释一下为什么,这个答案没有提供问题的解决方案吗?
  • 我投了反对票,因为提到库应该是评论,更确切的问题是:是否有一些我可以编写的代码可以在两个浏览器中正确执行此转换?请阅读以下内容:stackoverflow.com/help/how-to-answer如果你给他代码,我会反对你的答案!
  • 很公平,你有一个改进的答案
  • 对不起,我不想成为一个坚持不懈的人,我在回答前几个问题时也因此受到了抨击,我现在投了赞成票,谢谢!
猜你喜欢
  • 2014-03-18
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
相关资源
最近更新 更多