javascript日期差异
我看过: 但我还是不能让它工作javascript日期差异,javascript,date,Javascript,Date,我看过: 但我还是不能让它工作 var difference = data.List[0].EndDate - Math.round(new Date().getTime()/1000.0) * 1000; var daysRemaining = Math.floor(difference / 1000 / 60 / 60 / 24); var hoursRemaining = Math.floor(difference / 1000 / 60 / 60 - (24 * daysRemainin
var difference = data.List[0].EndDate - Math.round(new Date().getTime()/1000.0) * 1000;
var daysRemaining = Math.floor(difference / 1000 / 60 / 60 / 24);
var hoursRemaining = Math.floor(difference / 1000 / 60 / 60 - (24 * daysRemaining));
var minutesRemaining = Math.floor(difference / 1000 / 60 - (24 * 60 * daysRemaining) - (60 * hoursRemaining));
var secondsRemaining = Math.floor(difference / 1000 - (24 * 60 * 60 * daysRemaining) - (60 * 60 * hoursRemaining) - (60 * minutesRemaining));
data.List[0].EndDate是一个UTC编号(如:1291427809310()),它将始终晚于当前日期。您说UTC时间戳是“2004-09-16T23:59:58.75” 那么你基本上是在做什么
var x = "2004-09-16T23:59:58.75" - 123456
既然您已经澄清了这一点,那么上述情况就不适用了。您的新问题是过去的毫秒数,因此当您进行差分计算时,将得到一个负数。您可能想交换订单
var difference = new Date().getTime()-data.List[0].EndDate;
如果EndDate以毫秒为单位,而getTime()返回毫秒,为什么要将它除以1000,然后在同一行中将它乘以1000?如果代码的其余部分只需要第二个精度,为什么要以毫秒为单位工作呢?从几秒钟开始简化所有计算:
var difference = Math.round((data.List[0].EndDate - new Date().getTime()) / 1000);
我现在相信这是最好的解决方案:
您希望输出结果是什么?剩余的小时、分钟和秒数是正确的。“我无法让它工作”的确切含义是什么?我添加了一个更新的解决方案,用于处理跨越DST的日期。对不起,我的错,这是一个类似于1291427809310的数字,根据您在评论中所说的添加了新信息。这不考虑date1和date2跨越一个日光节约更改事件的情况。看见
function days_between(date1, date2) {
// The number of milliseconds in one day
var ONE_DAY = 1000 * 60 * 60 * 24
// Convert both dates to milliseconds
var date1_ms = date1.getTime()
var date2_ms = date2.getTime()
// Calculate the difference in milliseconds
var difference_ms = Math.abs(date1_ms - date2_ms)
// Convert back to days and return
return Math.round(difference_ms/ONE_DAY)
}