Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript日期差异_Javascript_Date - Fatal编程技术网

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)

}