我需要使用最佳精度比较两个日期,对我来说一天会很好并考虑闰年。
有可能的 ?我现在只创建比较月份精度的函数:/
如果您有日期字符串,则可以使用Date.parse("datestring")
. 它将返回 long(以毫秒为单位的时间)。你可以比较任意两个多头。
var date1 = new Date("10/25/2011");
var date2 = new Date("09/03/2010");
var date3 = new Date(Date.parse(date1) - Date.parse(date2));
var dayDiff = date3.getDate() - 1;
var monthDiff = date3.getMonth();
var yearDiff = date3.getFullYear() - 1970;
这是jsfiddle来测试它。
您可以从另一个 Date 对象中减去 Date 对象并返回微秒
var d= new Date('2012/11/29');
var a= new Date('2012/11/30');
alert( (a-d) /(1000*24*60*60)) ); /* returns 1 */
这应该以相当好的精度适用于天数差异:
function daysSince( past ) {
return 0|( new Date().getTime() - past.getTime() ) * 1.16e-8;
}
console.log( daysSince( new Date('10/03/2012') ) ); //=> 31
编辑:实际上,如果您只想知道两个日期之间的差异,您总是可以返回一个正数。
function daysBetweenDates( d1,d2 ) {
return Math.abs( 0|( d1.getTime() - d2.getTime() ) * 1.16e-8 );
}
我遇到的最好的 JavaScript 时间和日期操作库是Moment.js
获取两个日期之间的天数:
d1 = moment('2012-10-31')
d2 = moment('2012-11-02')
Math.abs(moment.duration(d1-d2, 'ms').days())
// => 2
默认精度为毫秒。