moment.jsで日付のみを比較する方法


107

moment.jsは初めてです。私は日付オブジェクトを持っていて、それに関連付けられた時間があります。比較する時間を除いて、その日付が今日の日付以上かどうかを確認したいだけです

 var dateToCompare = 2015-04-06T18:30:00.000Z

dateToCompareが今日の日付以上かどうかを確認したいだけです。isSame of moment.jsを確認しましたが、文字列と日付部分のみを取得しているようです。しかし、日付を文字列に変換したり、それをさらに操作したりしたくありません。私はその日付を文字列に変換するときにjavascriptが予期しない何かをするのではないかと心配しているため(オフセットやdstなどを追加するなど)、または間違っている可能性があります。

ドキュメントのサンプルisSame()

moment('2010-10-20').isSame('2010-10-20');

また、1つのステートメントとして結合されたisSame()とisAfter()のようなものも探しています。

moment.jsのみを使用して比較する必要があります。単純なJavaScriptの日付比較を提案しないでください。

回答:


183

ドキュメントでは、粒度を指定するために2番目のパラメーターを渡すことがかなり明確になっています。

粒度をミリ秒以外の単位に制限する場合は、2番目のパラメーターとして単位を渡します。

moment('2010-10-20').isAfter('2010-01-01', 'year'); // false
moment('2010-10-20').isAfter('2009-12-31', 'year'); // true

2番目のパラメーターはチェックする単一の値ではなく精度を決定するため、dayを使用すると年、月、日がチェックされます。

あなたのケースでは'day'、2番目のパラメーターとして渡します。


1
ありがとう!文字列に変換する必要がないようです。しかし、isSame()とisAfter()の一般的なメソッドはありますか
NoobGeek

2
私はすでにそれを使用しました。ありがとう!両方の使用が難しいということではなく、共通の機能があるかどうかを確認したかっただけです。
NoobGeek

@kabirbaidhyaは、大量の未承諾の編集を行う前に、問題についての質問と回答にコメントを投稿することを丁寧に検討しています。あなたが行った編集が必要だとは思わないので、ロールバックしました。情報が重要だと思われる場合は、自分で回答を投稿してください。
zzzzBov 2016年

4
補足として:「2番目のパラメーターが精度を決定し、チェックする単一の値だけではないため、dayを使用すると、年、月、日がチェックされます。」
eveevans 2016

6
@NoobGeekバージョン2.10.7以降のisSameOrBefore()とisSameOrAfter()が追加されました。
WhiteHotLoveTiger 2016年


6

私の場合、2つの日付を比較するために次のコードを実行しました。

var date1 = "2010-10-20";
var date2 = "2010-10-20";
var time1 = moment(date1).format('YYYY-MM-DD');
var time2 = moment(date2).format('YYYY-MM-DD');
if(time2 > time1){
	console.log('date2 is Greter than date1');
}else if(time2 > time1){
	console.log('date2 is Less than date1');
}else{
	console.log('Both date are same');
}
<script src="https://momentjs.com/downloads/moment.js"></script>


6

startOf('day')メソッドを使用して日付だけを比較できます

例:

var dateToCompare = moment("06/04/2015 18:30:00");
var today = moment(new Date());

dateToCompare.startOf('day').isSame(today.startOf('day'));
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.