Javascript 输出时间的脚本行为错误

Javascript 输出时间的脚本行为错误,javascript,jquery,time,Javascript,Jquery,Time,我从json文件中获取数据。他们有这个表格(这些是信息) (“时间”以秒为单位) 脚本应仅显示最近一小时的消息。它可以这样做,但它在屏幕上显示的时间不正确 它应该是这样的:用户进入页面,他看到最后一个小时的消息,他重写,所有新消息都显示出来 但是我得到的结果是,最后几个小时的信息显示的时间不正确,而且信息的输出也不正确 所有消息都在最近一个小时内显示,但我需要立即显示新消息,如果已经显示,则不显示新消息(如现在所示) $.getJSON('data/messages.json',回调); //

我从
json
文件中获取数据。他们有这个表格(这些是信息)

(“时间”以秒为单位)

脚本应仅显示最近一小时的消息。它可以这样做,但它在屏幕上显示的时间不正确

它应该是这样的:用户进入页面,他看到最后一个小时的消息,他重写,所有新消息都显示出来

但是我得到的结果是,最后几个小时的信息显示的时间不正确,而且信息的输出也不正确

所有消息都在最近一个小时内显示,但我需要立即显示新消息,如果已经显示,则不显示新消息(如现在所示)

$.getJSON('data/messages.json',回调);
//我从文件中获取消息
回拨([
{
“时间”:“1499877171”,
“用户”:“qwe”,
“消息”:“qwe”
},
{
“时间”:“1499877174”,
“用户”:“qwe”,
“消息”:“qwe”
},
{
“时间”:“1499877175”,
“用户”:“qwe”,
“消息”:“qwe”
}
]);
函数回调(响应){
setTimeout(函数tick(){
对于(变量i=0;i如果(diff_time根据charlietfl的评论,在显示消息时,您需要为每条消息存储一些标识符,然后在显示消息之前检查该列表。如果您控制提供json数据的系统,您可以在那里进行跟踪,然后只提供需要在json数据中显示的消息。W显示消息时,更新跟踪机制以指示消息已显示。(问题很广泛,因此答案也同样如此)

关于日期显示问题,我认为这一行可能是造成问题的原因:

var new_date = new Date(diff_time);
您正在根据两个日期之间的差异创建一个新的
Date
diff_time
的值相对于表示当前日期/时间的类似值将是“非常小的”。您可能想做的事情如下所示(为上下文显示几行):

。。。。
var now=Date.now();
var time_ms=data.time*1000;//转换为毫秒
var diff_time=Math.floor(now-time_ms);//计算差异

如果(不同时间)对每个项目使用增量id…每次存储最高id,然后根据存储的id进行筛选,以查看新的内容与已看到的内容。如果需要,存储在本地存储“错误时间”是什么意思?时间格式是否不正确?是否有时间间隔?是否显示来自不同消息的时间?预期结果是什么?实际结果是什么?这将有助于确定可能需要调整的内容。@TLS我的意思是,当将时间转换回可读版本时,会出现一些错误,并且不会显示是正确的(不是消息写入的时间)
var new_date = new Date(diff_time);
....
var now = Date.now();
var time_ms = data.time * 1000;              // Convert to milliseconds
var diff_time = Math.floor(now - time_ms);   // Calculate difference
if (diff_time <= 3600000) {                  // Check range
    var new_date = new Date(time_ms);        // Create Date from milliseconds
    ....