Jquery Timeago NaN 多年前来自 .attr

Jquery Timeago NaN Years ago from .attr

首先,我在为此奋斗了一段时间后终于发帖了。

基本上,我正在使用 Socket.IO 为我正在处理的网站创建一个 Messenger。我在 timeago 插件显示 NaN 几年前作为其输出时遇到问题。

谷歌搜索后,我发现 timeago 插件需要一个非常具体的日期格式,或者 Java Date() 对象。

这是我的代码..

socket.on('chat.message', function (data) {
  data = JSON.parse(data);
  if (data.hasOwnProperty('system')) {
    toastr["success"](data.msg);
  } else {
    $chat.append(
      '<li class="left clearfix">' +
      '<span class="chat-img pull-left">' +
      '<img src="https://www.gravatar.com/avatar/?d=mm&amp;s=40" alt="User Avatar" class="img-circle" width="50" />' +
      '</span>' +

      '<div class="chat-body clearfix">' +
      '<div class="header">' +
      '<strong class="primary-font">' + data.nickname + '</strong>' +
      '<small class="pull-right text-muted time" data-time="' + data.timeSent + '">' +
      '<span class="glyphicon glyphicon-time"></span>' + $.timeago(data.timeSent) +
      '</small>' +
      '</div>' +
      '<p>' + data.msg + '</p>' +
      '</div>' +
      '</li>'
    );
    $('.panel-body').animate({scrollTop: $chat.height()});
  }
});

function updateTimes() {
  $('.time').each(function () {
    var time = $.timeago($(this).attr('data-time'));
    $(this).html(time);
  });
}
setInterval(function () {
  updateTimes();
}, 3000);

如您所见,附加到页面上的每个消息元素都有 timeago 输出,发送的原始时间存储在一个属性中,供我的函数使用 updateTimes() 进行更新。

第一次收到消息时,一切正常。然而,当我使用属性的值并将其传递给 timeago 时,这就是一切出错的地方。

通过搜索,我认为我可以做到以下几点:

function updateTimes() {
  $('.time').each(function() {
    var time = new Date($(this).attr('data-time'));
    $(this).html($.timeago(time));
  });
}

虽然这也不起作用。

.....编辑....

我忘了说我一开始是怎么设置时间的..

var d = new Date();
var time = d.getTime();

希望这对某些人来说是显而易见的,不幸的是我的 javascript 知识不足!

非常感谢任何帮助。

好的,现在已经解决了。

你好像不能给 Date() 传递一个字符串,所以我不得不

var time = new Date(parseInt($(this).attr('data-time')));

非常感谢@amklose

好的,现在已经解决了。

看来你不能给 Date() 传递一个字符串,所以我不得不

var time = new Date(parseInt($(this).attr('data-time')));

非常感谢@amklose