2010-12-14 239 views
8

我看:Get difference between 2 dates in javascript?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/)),将永远是晚于当前的日期。

+0

作为输出你期待什么? – 2010-12-14 03:33:26

+0

有正确的小时,​​分​​钟和秒钟。 – williamparry 2010-12-14 03:39:15

+1

“我无法正常工作”是什么意思? – epascarello 2010-12-14 14:37:25

回答

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; 
+0

对不起,我的坏,这是一个数字像1291427809310 – williamparry 2010-12-14 03:38:52

+0

根据您在评论中说的内容添加新的信息 – epascarello 2010-12-14 14:47:26

3

如果结束日期以毫秒为单位,和的getTime()返回毫秒,你为什么要除以1000只至1000在同一条直线倍增呢?如果你只需要其他代码的第二精度,为什么要以毫秒为单位工作?启动了有几秒钟,以简化所有的计算:

var difference = Math.round((data.List[0].EndDate - new Date().getTime())/1000); 
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

+6

这不涉及date1和date2跨越的情况一天节省灯光的变化事件。请参阅http://stackoverflow.com/a/15289883/850996 – 2013-03-08 08:45:56

+0

我应该在哪种格式中通过日期? – nirav 2013-03-29 06:32:08

0

我写的一个component如果你不想使用一个完整的图书馆我喜欢moment.js。它还可以输出您需要的任何时间单位(天,周,月,分,小时等)的差异。

下面是它如何工作:

var date1 = date.getTime(); 
var date2 = data.List[0].EndDate; 

var millisecondsRemaining = dateDiff(date1, date2, 'milliseconds'); 
var secondsRemaining = dateDiff(date1, date2, 'seconds'); 
var minutesRemaining = dateDiff(date1, date2, 'minutes'); 
var hoursRemaining = dateDiff(date1, date2, 'hours'); 
var daysRemaining = dateDiff(date1, date2, 'days'); 
var weeksRemaining = dateDiff(date1, date2, 'weeks'); 
var monthsRemaining = dateDiff(date1, date2, 'months'); 
var yearsRemaining = dateDiff(date1, date2, 'years'); 

要使用DATEDIFF()方法你可以导入该组件。