我有一个$ .ajax请求并保存了开始时间和结束时间(使用new Date().getMilliseconds()
)。我看到一个奇怪的事件,有时我会从startTime
中减去endTime
并获得一个负数。
(function(){
var startTime = new Date().getMilliseconds();
$.ajax({
url:"/url.php",
data: someObject,
method: "POST",
complete:function(r){
var endTime = new Date().getMilliseconds();
console.log(endTime - startTime); // sometimes negative?!
}
});
})();
有人可以解释一下吗?我确信除了时空连续体中的裂缝之外,还有一个合乎逻辑的解释。
(如果有更好的方法来衡量这一点,那也值得赞赏!)
答案 0 :(得分:8)
.getMilliseconds
返回创建Date
对象时的毫秒部分。因此,在50%的比较中,该部分将高于或低于任何其他Date对象的部分。
你想要的是new Date().getTime()
,自1970年Unix时代开始以来,它返回绝对毫秒。
答案 1 :(得分:5)
这通常是负面的(约一半时间),因为这不是自纪元(1970年1月1日)以来的毫秒数。这相当于获得当前日期时间的毫秒数。因此,如果自上一秒开始已经过了400毫秒,那么你将获得400 ...如果自上一秒开始已经过了800毫秒,你将获得800。
您正在寻找的功能是:new Date()。getTime()
答案 2 :(得分:2)
var date = new Date();
var systemMS = date.getMilliseconds();
var timeMS = date.getTime();
alert( 'Currently your clock is at ms : '+ systemMS );
alert( '"ms" since 1 January, 1970 UTC. : '+ timeMS );
请尝试:
var start = new Date().getTime(); // note getTime()
$.ajax({
url :"/url.php",
data : someObject,
method : "POST",
cache : false, // prevent caching response
complete: function(){
var end = new Date().getTime();
console.log( end - start );
}
});
MDN 说:
getMilliseconds getMilliseconds返回的值是0到999之间的数字。