1

我需要使用最佳精度比较两个日期,对我来说一天会很好并考虑闰年。

有可能的 ?我现在只创建比较月份精度的函数:/

4

4 回答 4

2

如果您有日期字符串,则可以使用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来测试它。

于 2012-11-04T00:36:19.620 回答
2

您可以从另一个 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 */
于 2012-11-04T00:46:49.347 回答
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 );
}
于 2012-11-04T00:32:09.713 回答
1

我遇到的最好的 JavaScript 时间和日期操作库是Moment.js

获取两个日期之间的天数:

d1 = moment('2012-10-31')
d2 = moment('2012-11-02')
Math.abs(moment.duration(d1-d2, 'ms').days())
// => 2

默认精度为毫秒。

于 2012-11-04T00:43:44.843 回答