【问题标题】:jQuery Date() function returns December 31, 1969 instead of current datejQuery Date() 函数返回 1969 年 12 月 31 日而不是当前日期
【发布时间】:2018-04-11 13:29:42
【问题描述】:

我正在从 Jon Duckett 的书“Javascript & jQuery: Interactive Front-End Development”中学习 jQuery。到目前为止,我从书中复制的所有代码似乎都运行顺利,但是这段代码让我很困惑。基本上,当您单击 HTML 中的列表项时,它会在 li 旁边显示单击事件发生的日期。它有效,但日期显示为 1969 年 12 月 31 日,而不是对象单击的日期。我一直在阅读如何解决这个问题,但我没有运气。是否有不同的方法可以获得相同的结果,还是我只是在代码中遗漏了什么?

jQuery sn-p 和 jsfiddle 链接如下: jsFiddle

$(function(){
   $('li').on('click', function(e){
    $('li span').remove();
    var date = new Date();
    date.setTime(e.timeStamp);
    var clicked = date.toDateString();
    $(this).append('<span class="date">' + clicked + ' ' + e.type + '</span>');
  });
});

【问题讨论】:

    标签: javascript jquery html date


    【解决方案1】:

    这是因为 e.timeStamp 返回 DOMHighResTimeStamp 而不是 DOMTimeStamp。这是非常少的。因此,它将日期默认设置为 1969 年 12 月 31 日。

    new Date(),用当前日期和时间创建一个新的日期对象。你不需要在这里明确地设置时间:

    var date = new Date();
    var clicked = date.toDateString();
    

    【讨论】:

    • 啊,完美!除了删除那行代码之外,我尝试了所有方法。谢谢!
    • 不太可能是这样 - 请参阅参考 api.jquery.com/event.timeStamp jQuery 事件具有 timeStamp 属性。
    【解决方案2】:

    删除date.setTime(e.timeStamp); 行,一切正常:

    $(function(){
        $('li').on('click', function(e){
            $('li span').remove();
            var date = new Date();
            var clicked = date.toDateString();
            $(this).append('<span class="date">' + clicked + ' ' + e.type + '</span>');
        });        
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多