1

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

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

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

20100112213328,

必须有更好的方法。

4

3 回答 3

1

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

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
}
于 2012-11-08T08:36:02.427 回答
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))
{
}
于 2012-11-08T08:41:09.377 回答
0

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

否则(15.9.4.2):

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

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

于 2012-11-08T08:56:08.593 回答