首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Timeago + DateJS = NaN

Timeago + DateJS = NaN
EN

Stack Overflow用户
提问于 2010-06-22 01:33:16
回答 2查看 1.3K关注 0票数 2

我正在尝试将timeago (source)与datejs一起使用,但它不工作。下面是我期望工作的一些示例代码(假设加载了timeagodatejs ):

代码语言:javascript
复制
>>> 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"

我非常感谢任何关于这可能失败的原因的输入,以及如何修复或绕过这个问题。

谢谢。

布赖恩

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-22 02:15:33

(我是Timeago的作者)

问题在于,datejs输出的ISO8601时间戳包含一个毫秒值。Timeago目前不支持这种详细的ISO8601时间戳;它只支持ISO8601规范的一个子集。

这已经不是我第一次听说这个问题了,是时候有一个补丁来解决这个问题了。我创建了一个issue to track this。期待即将推出的Timeago版本。可能是v0.9。

现在有了一个新版本的 (v0.9),它支持时间戳中的毫秒。Download it here。这是relevant commit

票数 5
EN

Stack Overflow用户

发布于 2010-06-22 01:46:42

我对jquery.timeago.js做了以下补丁,它解决了这个问题:

代码语言:javascript
复制
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);
+      }
     }
   });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3086954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档