使用白天的精度比较JavaScript/jQuery中的两个日期



我需要使用最佳准确性比较两个日期,对我来说,这一天还可以,并考虑到leap年。

有可能吗?我现在只创建功能来比较月份的准确性:/

您可以从另一个日期对象减去日期对象,然后返回微秒

var d= new Date('2012/11/29');
var a= new Date('2012/11/30');
alert( (a-d) /(1000*24*60*60)) ); /* returns 1 */

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

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

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

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

默认精度为毫秒。

这应该可以在数天内以相当不错的精确度来差异:

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 );
}

最新更新