【发布时间】:2020-02-13 13:47:43
【问题描述】:
我在 'li' 元素上设置了一个事件监听器,该元素包含一个应该输出当前日期的 span 元素。
我有以下几行代码:
var date = new Date();
date.setTime(e.timeStamp);
var showDate = date.toDateString();
$(this).append('<span class="date-clicked">' + showDate + '</span>');
这个想法是使用事件对象的“timeStamp”属性获取从 1970 年 1 月 1 日(纪元/unix 时间)开始的毫秒数,然后使用 var showDate 获取正确的日期格式以显示在 span 元素中相应的 li 元素。
顺便说一句,我正在使用 Firefox。
每次单击 li 元素时,它都会向我显示纪元时间“1970 年 1 月 1 日星期四”,而不是我想看到的“2020 年 2 月 13 日星期四”。
有没有办法让 e.timeStamp 显示当前日期而不是纪元/unix 日期?
任何正确方向的指针或提示都感谢人们。谢谢。
【问题讨论】:
-
什么是
e.timeStamp?由于e.timeStamp不返回任何内容(可能是undefined),当然 setTime 只会将日期设置为 unix 时间的第一个时间戳。 -
猜猜你可以像这样创建日期:
var date = new Date(e.timeStamp)... -
第一行代码创建了一个新的 Date 对象,它的时间设置为点击事件的时间(第二行)。事件被点击的时间然后被转换为可以读取的日期(第三行)。
-
有趣的是,我尝试了你的建议 Terry,但它并没有达到我想要的效果。观察:var date = new Date(e.timeStamp);控制台日志(日期); var clicked = date.toDateString();以上在控制台查看时仍然输出纪元时间 呵呵
-
你为什么不直接使用 'new Date()' 而不是 'showDate' 像 $(this).append('' + new Date( ) + '');
标签: javascript jquery object events unix-timestamp