javascript日期差异

wil*_*rry 8 javascript date

我看过:在javascript中获取2个日期之间的差异?

我仍然无法让这个工作.

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));
Run Code Online (Sandbox Code Playgroud)

data.List [0] .EndDate是一个UTC号码(如:1291427809310(http://www.epochconverter.com/)),它总是晚于当前日期.

Dev*_*ate 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)

}
Run Code Online (Sandbox Code Playgroud)

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

  • 这并不考虑date1和date2跨越一天的节约灯更改事件的情况.请参见http://stackoverflow.com/a/15289883/850996 (6认同)

Dev*_*ate 6

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

http://momentjs.com/


epa*_*llo 5

你说UTC时间戳是"2004-09-16T23:59:58.75"?

所以你基本上在做

var x = "2004-09-16T23:59:58.75" - 123456
Run Code Online (Sandbox Code Playgroud)

既然你澄清了,那么上述不适用.您的新问题是过去的毫秒数,因此当您进行差异计算时,您将得到一个负数.您可能想要交换订单.

var difference = new Date().getTime()-data.List[0].EndDate;
Run Code Online (Sandbox Code Playgroud)