【问题标题】:Date difference in javascript / jQueryjavascript / jQuery中的日期差异
【发布时间】:2012-01-25 05:30:05
【问题描述】:

我正在查询 facebook graph api。它以以下格式返回日期:2012-01-23T23:52:29+0000

我需要在 javascript 中查找此类日期的差异。这不是 javascript 中的有效日期(Date.parse()new Date()

我正在考虑用' '(空格)替换'T',用'/' 替换'-',用''(空字符串)替换'+0000'。这是唯一的方法吗?还是我在这里遗漏了什么?

另外,如果这是唯一的方法,有人可以给我一个正则表达式来一次性替换所有内容吗?

执行速度是我主要关心的问题。

【问题讨论】:

标签: javascript jquery datetime


【解决方案1】:

我同意将- 替换为/,因为这就是ISO 标准所规定的(Facebook 喜欢搞砸东西,比如<meta> 标签带有property 属性而不是name就像他们应该的那样)。

保留时区部分,因为 JS 理解并会相应地处理它。

总的来说,你想要new Date(input.replace(/-/g,'/'));

针对 cme​​ts,更好(更完整)的解决方案是:

new Date(input.replace(/-/g,'/').replace("T"," ").replace(/\+[0-9]+$/,''));

【讨论】:

  • 它在 Firefox 9.0 中抛出无效日期。虽然在 chrome 中工作
  • 你也有 Firefox 的正则表达式吗?
  • new Date(input.replace(/-/g,'/').replace(/T|\+[0-9]+/g,''));
  • en.wikipedia.org/wiki/ISO_8601 ISO 8601 用“-”代替“/”。它的标准。这一次,facebook 没有搞砸。 Firefox 示例不起作用。 'T' 应该替换为 ' ' not ''。感谢 Kolink,你让我意识到正则表达式并不神奇。我也可以学。我认为正则表达式可以一次性完成所有替换。真是太傻了:(
  • 嗯,有趣。所以浏览器都是错的?奇怪...开始希望 Date.parse() 和 PHP 的 strtotime() 一样好...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
  • 1970-01-01
  • 2018-09-30
相关资源
最近更新 更多