javascript日期差异

时间:2010-12-14 03:29:54

标签: javascript date

我看过:Get difference between 2 dates in javascript?

我仍然无法让它发挥作用。

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(http://www.epochconverter.com/)),它总是晚于当前日期。

4 个答案:

答案 0 :(得分:11)

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)

}

http://www.mcfedries.com/javascript/daysbetween.asp

答案 1 :(得分:6)

我现在相信这个是最好的解决方案:

http://momentjs.com/

答案 2 :(得分:5)

你说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;

答案 3 :(得分:3)

如果EndDate是以毫秒为单位,并且getTime()返回毫秒,那么为什么要将它除以1000除以在同一行中乘以1000?如果你只需要所有其余代码的第二精度,为什么要在几毫秒内工作?从几秒钟开始简化所有计算:

var difference = Math.round((data.List[0].EndDate - new Date().getTime()) / 1000);