比较JS中最新日期的最佳方法?

时间:2012-11-08 08:30:08

标签: javascript parsing date twitter

我说的是以twitter API返回日期的格式编码的那些,比如......

"Tue Jan 12 21:33:28 +0000 2010"

我想到的最好的事情是尝试用正则表达式将其分割成更像......

20100112213328

是更好的方法。

3 个答案:

答案 0 :(得分:1)

您可以使用"Tue Jan 12 21:33:28 +0000 2010"之类的字符串创建一个新的Date对象。

var dateString = "Tue Jan 12 21:33:28 +0000 2010";
var twitterDate = new Date(dateString);

然后,你可以简单地使用<和>进行比较。

var now = new Date();
if (now < twitterDate) {
    // the date is in the future
}

答案 1 :(得分:1)

JavaScript Date将正确解析Twitter日期:

  var d1 = new Date ("Tue Jan 12 21:33:28 +0000 2010")
    , d2 = new Date ("Tue Jan 12 22:33:28 +0000 2010");

您可以使用转换为数字形式的getTime方法对它们进行比较:

  if (d1.getTime() < d2.getTime())
  {
       //...
  }

或者,简单地

if (d1 < d2)
{
}

如果需要,请明确强制编号:

if (+(d1) < +(d2))
{
}

答案 2 :(得分:0)

就ECMAScript规范5.1而言(见15.9.1.15),日期时间唯一受支持的字符串交换格式是YYYY-MM-DDTHH:mm:ss.sssZ(以及更短的表格)。

否则(15.9.4.2):

  

如果字符串不符合该格式,则该函数可能会回退到任何特定于实现的启发式或特定于实现的日期格式。

我会使用基于正则表达式的解决方案,该解决方案很短并且保证可以在任何地方工作依赖于用户的浏览器和本地化参数对我来说似乎有点怪异。