如何创建一个可以在javascript中返回日期差异的函数?

时间:2010-01-27 10:40:44

标签: javascript datetime

我创建了以下功能以获取两个日期之间的日期差异。请检查它是否正确以及如何找到月份(乘以30或31?)和年份...

function days_between(date1, date2,datepart) {

// The number of milliseconds in one day
 var ONE_DAY=0;
 if ( datepart === undefined ) {
  datepart = 'D';
}

 if(datepart='Y')
 {     
 ONE_DAY = 1000 * 60 * 60 * 24 * 30 *12
 }
 else if (datepart='M')
 {
 ONE_DAY = 1000 * 60 * 60 * 24 * 30
 }
 else
 {
 ONE_DAY = 1000 * 60 * 60 * 24   //for day
 }

// 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)

}

2 个答案:

答案 0 :(得分:2)

如果您的应用程序需要大量日期操作方法,您可能需要考虑使用类似Datejs库的内容。

如果您从Datejs库中包含time.js,则可以执行以下操作:

var future = new Date().add({months: 5}); 
var now = new Date();

var span = new TimeSpan(future - now);

console.log("Days: ", span.getDays());

time.js脚本是可选的,不包含在编译/构建版本中。您可以直接从SVN repository下载。

答案 1 :(得分:0)

你应该在改变之前的几天内改变。像:

var d1 = new Date().getTime(),
d2 = new Date(2010, 11, 31).getTime();
alert(Math.round((d2-d1)/24/60/60/1000) + ' days left for 2010');