两个时间戳之间的差异,以秒为单位

问题描述 投票:0回答:3

我正在使用jquery动态创建某些表行,我想在该行中以秒为单位显示创建,我尝试下面的代码

var currenttime = moment();
$(".tbody").append("<tr><td class='tdata' data-id='"+currenttime+"'>0 seconds</td></tr>");


setInterval(function(){ 
var latest = moment();
var oldtime = $(".tdata").data("id");
var newtime = oldtime-latest;
$(".tdata").html(newtime+ "secs");
}, 3000);

所以基本上我在创建行时存储当前时间,然后随机检查并显示总秒数(不是分钟或小时),如果5分钟它应该显示300。

我稍后尝试了var = moment(); ,但它创建的对象我无法将其存储在数据属性中,即使可以在没有时刻的情况下完成它也会很棒,任何想法都欢迎你。

javascript momentjs
3个回答
1
投票

你不需要片刻,但只需要DategetTime()方法)

var currenttime = new Date().getTime(); // Count milliseconds since 1970
$(".tbody").append("<tr><td class='tdata' data-id='"+currenttime+"'>0 seconds</td></tr>");


setInterval(function(){ 
  var oldtime = parseInt($(".tdata").data("id")); // HTML store it as String, don't forget to transform it to int "14254782000" > 14254782000
  var seconds = parseInt((new Date().getTime() - oldtime) / 1000);
  $(".tdata").html(seconds+ " secs");
}, 1000);

这种方式你不是存储一个时刻对象而是存储一些秒(int),它也总是现在 - 过去(而不是过去 - 现在),因为现在高于过去(我们想要一个正值)。


1
投票

不知道该解释这个例子:

$("button").on("click", function(){
  $("tbody").append("<tr><td class='tdata'><span data-seconds-since=" + Date.now() + ">0</span> seconds</td></tr>");
});

// updates all places at once
setInterval(function(){ 
  var now = Date.now();
  $("[data-seconds-since]").text(function(){
    return ((now - this.dataset.secondsSince) / 1000).toFixed(1)
  });
}, 40);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table><tbody></tbody></table>

<button type="button">Add Row</button>

1
投票

变化不大

var starts = Date.now();
//...
var diff = (Date.now() - starts) / 10000;

你也可以查看qazxsw poi,因为你已经在使用片刻JS了。

© www.soinside.com 2019 - 2024. All rights reserved.