1

最高の精度を使用して 2 つの日付を比較する必要があります。私にとっては、うるう年を考慮して問題ありません。

可能です ?今のところ、月の精度を比較する関数のみを作成します:/

4

4 に答える 4

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 に答える
2

日付文字列がある場合は、 を使用して解析できます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を次に示します。

于 2012-11-04T00:36:19.620 に答える
1

私が遭遇した最高の JavaScript 時刻と日付操作ライブラリはMoment.js です。

2 つの日付間の日数を取得する:

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 に答える
1

これは、かなり良い精度で日数の差に対して機能するはずです。

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 );
}
于 2012-11-04T00:32:09.713 に答える