Javascript İki Tarihi Karşılaştırma

JavaScript İki Tarihi Karşılaştırma

Tarihler arasında işlem yapmak önemlidir. Uygulama geliştirirken tarihler ile çalışmamız için özel nesneler ve fonksiyonlar bulunur. JavaScript bize Date adında bir nesneyi tarih işlemleri için verir.

Tarih işlemleri yaparken iki tarihi karşılaştırmak bizim için önemlidir. Hangi tarih önce veya hangi tarih sonra, yada iki tarih bir birine eşit mi?

Bu soruların cevabını bulmak için tarih nesneleri arasında karşılaştırma yapabiliriz.

Mesela verilen tarih diğer tarihten küçük mü? Yani daha önceki bir zaman dilimine mi işaret ediyor? Bakalım

const tarihBir = new Date();
const tarihIki = new Date(1995, 11, 17);

if ( tarihIki < tarihBir) {
    console.log("TarihIki daha eski bir tarih");
} else {
    console.log("TarihBir daha eski bir tarih")
}

// Konsola
// TarihIki daha eski bir tarih
// yazdırır

if ifadesi içerisinde tarihBir ve tarihIki değerlerini karşılaştırdık ve sonucunu aldık.

Özellikle büyük ve küçük tarihlerde bu şekilde bir karşılaştırma işe yarasa da, == ve === ile iki tarihin eşit olup olmadığını denetlerken sorun yaşayabiliyoruz.

const tarihBir = new Date();
const tarihIki = new Date(tarihBir);

console.log(tarihBir)
console.log(tarihIki)

// Konsola
// 1995-12-16T22:00:00.000Z
// 1995-12-16T22:00:00.000Z
// yazar. Not siz kendi işlem yaptığınız
// zamanı göreceksiniz.

if ( tarihBir == tarihIki ) console.log("İki tarih eşit")
else console.log("İki tarih eşit DEĞİL");

// Konsola 
// İki tarih eşit DEĞİL
// yazar

if( tarihBir === tarihIki) console.log("İki tarih eşit")
else console.log("İki tarih eşit DEĞİL");

// Konsola 
// İki tarih eşit DEĞİL
// yazar

İlk olarak o anki tarihi kullanarak tarihBir değişkenini oluşturuyoruz. Sonra tarihBir değişkenin değerini kullanarak tarihIki değişkenini kullanıyoruz. Bu iki tarih aslında birbirine eşit.

Time Stamp Nedir?

Zaman damgası, herhangi bir olayın ne zaman meydana geldiğini, genellikle saniyenin küçük bir kısmına yakın bir doğrulukta, tarih ve zaman olarak tanımlayan bir karakter veya kodlanmış bilgi dizisidir. Wikipedia.

Bunu tarihlerin time stap değerine bakarak görebiliriz.

console.log(tarihBir.getTime());
console.log(tarihIki.getTime());

// Konsola
// 819151200000
// 819151200000
// yazar. Not siz kendi işlem yaptığınız
// zamanı göreceksiniz.

İki değere dikkat ederseniz aynı, fakat == ve === ifadeleri ile eşitlik denetiminde yanlış sonuç alıyoruz. Bunu engellemek için tarihlerin time stamp değerini karşılaştırabiliriz, yada valueOf ile tarih değerini alabiliriz (time stamp olarak).

if(tarihBir.getTime() == tarihIki.getTime()) // sonuç true
if(tarihBir.getTime() === tarihIki.getTime()) // sonuç true
if(tarihBir.valueOf() == tarihIki.valueOf()) // sonuç true
if(tarihBir.valueOf() === tarihIki.valueOf()) // sonuç true

Tarih nesnesi içeren değişkenleri karşılaştırırken direkt değişkenleri karşılaştırmak yerine degisken.getTime() veya degisken.valueOf() değerlerini karşılaştırmak daha doğru olacaktır. Böylece daha doğru sonuçlar elde ederiz.

Sonuç

Tarih değişkenlerini JavaScript üzerinde kullanırken, değişkenleri büyük, küçük veya eşit gibi ifadeler ile karşılaştırabiliriz. Fakat değişkenleri karşılaştırmak yerine degisken.valueOf değerlerini karşılaştırmak bize daha doğru sonuçlar verecektir.

Sorularınızı bize yorumlardan gönderebilirsiniz.

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir