Moment.js'de yalnızca tarih nasıl karşılaştırılır


108

Moment.js'de yeniyim. Bir tarih nesnem var ve onunla ilişkili bir zaman var. Karşılaştırma sırasındaki saat hariç, bu tarihin bugünün tarihinden büyük veya ona eşit olup olmadığını kontrol etmek istiyorum .

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

Sadece dateToCompare'in bugünün tarihine eşit mi yoksa daha büyük mü olduğunu kontrol etmek istiyorum. Moment.js isSame'i kontrol ettim, ancak string ve sadece tarih kısmını alıyor gibi görünüyor. Ancak tarihimi dizeye dönüştürmek ya da daha fazla değiştirmek istemiyorum. Çünkü javascript'in bu tarihi dizeye dönüştürürken beklenmedik bir şey yapabileceğinden endişeleniyorum (ofset veya dst eklemek gibi), veya hatalı olabilirim.

Dokümanlardan örnek isSame ()

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

Ayrıca isSame () ve isAfter () gibi tek bir ifade olarak birleştirilmiş bir şey arıyorum.

Sadece moment.js kullanarak karşılaştırma yapmam gerekiyor, lütfen sade javascript tarih karşılaştırması önermeyin.

Yanıtlar:


183

Belgeler, ayrıntı düzeyini belirtmek için ikinci bir parametreyi ilettiğiniz konusunda oldukça açıktır .

Ayrıntı düzeyini milisaniye dışında bir birimle sınırlamak istiyorsanız, birimleri ikinci parametre olarak iletin.

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

İkinci parametre, kontrol edilecek tek bir değer değil, kesinliği belirlediğinden, gün kullanımı yıl, ay ve günü kontrol edecektir.

Durumunuz için 'day'ikinci parametre olarak geçersiniz .


1
Teşekkürler! dizeye dönüştürmek zorunda değilim gibi görünüyor. Ancak isSame () ve isAfter () için ortak bir yöntemimiz var mı
NoobGeek

2
Bunu zaten kullandım. Teşekkürler! sadece ortak bir işlev olup olmadığını görmek istedim, ikisini de kullanmanın zor olduğunu değil.
NoobGeek

@kabirbaidhya, istenmeyen büyük düzenlemeler yapmadan önce, soruları ve cevapları not eden bir yorum göndermek kibar olarak kabul edilir. Yaptığınız düzenlemelerin gerekli olduğunu düşünmüyorum, bu yüzden onları geri aldım. Bilginin önemli olduğunu düşünüyorsanız, lütfen kendi cevabınızı göndermeyi düşünün.
zzzzBov

4
Tamamlamak için: "İkinci parametre kesinliği belirlediğinden ve kontrol edilecek tek bir değer olmadığından, günü kullanmak yıl, ay ve günü kontrol edecektir."
eveevans

6
@NoobGeek 2.10.7 sürümünden itibaren isSameOrBefore () ve isSameOrAfter () var.
WhiteHotLoveTiger


6

Benim durumumda 2 tarihi karşılaştırmak için aşağıdaki kodu yaptım size yardımcı olabilir mi ...

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')Sadece tarihi karşılaştırmak için yöntemi kullanabilirsiniz

Misal :

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

dateToCompare.startOf('day').isSame(today.startOf('day'));
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.