Timeago + DateJS = NaN

我正在尝试使用
timeago
(来源),
datejs
,它不起作用。这是我期望工作的一些示例代码(假设加载了
timeago
datejs
):
>>> d = new Date()
Mon Jun 21 2010 13:24:37 GMT-0400 (EST) { _orient=1, more...}
>>> d.toISOString()          // datejs.toISOString
"2010-06-21T17:24:37.501Z"   // this is a valid ISO8601 string, I believe
>>> $.timeago(d.toISOString()) // this should work
"NaN years ago"
对于为什么这可能会失败,以及如何修复或绕过这个问题,我将不得不提出任何意见。 谢谢。 布赖恩     
已邀请:
(我是Timeago的作者) 问题在于datejs输出的ISO8601时间戳包含一个毫秒值。 Timeago目前不支持ISO8601时间戳的详细信息;它仅支持ISO8601规范的子集。 这不是我第一次听说这个问题;是时候有一个补丁来处理毫秒。我创建了一个跟踪此问题的问题。留意即将推出的Timeago版本。可能v0.9。 更新:现在有一个新版本的Timeago(v0.9)支持时间戳中的毫秒数。在这里下载。这是相关的提交。     
我将以下补丁发送到
jquery.timeago.js
,这解决了问题:
diff -r 89cc78838c70 media/js/contrib/jquery.timeago.js
--- a/media/js/contrib/jquery.timeago.js    Mon Jun 21 10:22:12 2010 -0400
+++ b/media/js/contrib/jquery.timeago.js    Mon Jun 21 13:45:32 2010 -0400
@@ -87,8 +87,14 @@
     datetime: function(elem) {
       // jQuery's `is()` doesn't play well with HTML5 in IE
       var isTime = $(elem).get(0).tagName.toLowerCase() == "time"; // $(elem).is("time");
-      var iso8601 = isTime ? $(elem).attr("datetime") : $(elem).attr("title");
-      return $t.parse(iso8601);
+      var date_string = isTime ? $(elem).attr("datetime") : $(elem).attr("title");
+
+        // for use with datejs @ http://www.datejs.com/
+      if (typeof(Date.parse) == 'function') {
+        return Date.parse(date_string);
+      } else {
+        return $t.parse(date_string);
+      }
     }
   });
    

要回复问题请先登录注册