最高の精度を使用して 2 つの日付を比較する必要があります。私にとっては、うるう年を考慮して問題ありません。
可能です ?今のところ、月の精度を比較する関数のみを作成します:/
最高の精度を使用して 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 */
日付文字列がある場合は、 を使用して解析できますDate.parse("datestring")
。long (ミリ秒単位の時間) を返します。また、任意の 2 つの 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 です。
2 つの日付間の日数を取得する:
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
編集:実際には、2 つの日付の違いだけを知りたい場合は、常に正の数を返すことができます。
function daysBetweenDates( d1,d2 ) {
return Math.abs( 0|( d1.getTime() - d2.getTime() ) * 1.16e-8 );
}