JavaScript'te Tarihlerin Otomatik Düzeltilmesi
JavaScript'in çok ilginç ve kullanışlı bir özelliği vardır:
eğer Date nesnesi oluşturulurken geçersiz bir zaman
noktası belirtilirse - otomatik olarak geçerli bir zamana
yeniden hesaplanacaktır.
Hadi bir örnekle inceleyelim.
Bildiğiniz gibi, 35 Ocak diye bir tarih yoktur.
Ocak ayının mümkün olan maksimum günü - 31'dir.
Sonuç olarak, 35 Ocak tarihimizin 4 fazla
günü var. JavaScript böyle bir durumda bu fazla 4
günü bir sonraki aya ekleyecektir:
let date = new Date(2018, 0, 35);
console.log(date); // 4 Şubat sonucunu verecek
Sadece fazla günleri değil, ayları da belirtebilirsiniz.
Bu durumda, ayların sıfırdan başladığını ve dolayısıyla
son geçerli ayın 11. ay olduğunu unutmamalısınız.
Eğer 12. ayı belirtirseniz, bir sonraki yılın
Ocak ayını elde edersiniz:
let date = new Date(2018, 12, 1); // 12. ayı belirtiyoruz
console.log(date); // 1 Ocak 2019 tarihini verecek
Açıklanan düzeltme, daha küçük değerler için de çalışır.
Bildiğiniz gibi, bir ayın en küçük günü 1 numaralı
gündür. Bu nedenle, 0 numaralı günü belirtirseniz,
önceki ayın son gününü elde edersiniz:
let date = new Date(2018, 1, 0); // sıfırıncı günü belirtiyoruz
console.log(date); // 31 Ocak sonucunu verecek
Ayrıca gün ve ay için negatif değerler de belirtebilirsiniz.
Bu durumda, minimum günün 1 numaralı gün olduğunu ve
minimum ayın 0 numaralı ay olduğunu hatırlamalısınız.
Bu, eksi birinci günün önceki ayın sondan 2. gününe
denk geldiği ve eksi birinci ayın da bir önceki yılın son
ayına denk geldiği anlamına gelir:
let date = new Date(2018, 1, -1); // -1 gün belirtiyoruz
console.log(date); // 30 Ocak sonucunu verecek
let date = new Date(2018, -1, 1); // -1 ay belirtiyoruz
console.log(date); // 1 Aralık 2017 tarihini verecek
Yukarıda söylenenlerin hepsi saat, dakika ve saniyelerle de benzer şekilde çalışır:
let date = new Date(2018, 0, 1, 24, 0, 0); // 24. saati belirtiyoruz
console.log(date); // 2 Ocak, 0 saat sonucunu verecek
let date = new Date(2018, 0, 1, 25, 0, 0); // 25. saati belirtiyoruz
console.log(date); // 2 Ocak, 1 saat sonucunu verecek
JavaScript'in aşağıdaki zaman noktasını hangi tarihe dönüştüreceğini belirleyin:
let date = new Date(2018, 1, 35);
console.log(date); // hangi tarih olacak?
JavaScript'in aşağıdaki zaman noktasını hangi tarihe dönüştüreceğini belirleyin:
let date = new Date(2018, 15, 1);
console.log(date); // hangi tarih olacak?
JavaScript'in aşağıdaki zaman noktasını hangi tarihe dönüştüreceğini belirleyin:
let date = new Date(2018, 3, 31);
console.log(date); // hangi tarih olacak?
JavaScript'in aşağıdaki zaman noktasını hangi tarihe dönüştüreceğini belirleyin:
let date = new Date(2018, 1, 31);
console.log(date); // hangi tarih olacak?
JavaScript'in aşağıdaki zaman noktasını hangi tarihe dönüştüreceğini belirleyin:
let date = new Date(2018, 12, 33);
console.log(date); // hangi tarih olacak?
JavaScript'in aşağıdaki zaman noktasını hangi tarihe dönüştüreceğini belirleyin:
let date = new Date(2018, 33, 33);
console.log(date); // hangi tarih olacak?
JavaScript'in aşağıdaki zaman noktasını hangi tarihe dönüştüreceğini belirleyin:
let date = new Date(2018, 5, 0);
console.log(date); // hangi tarih olacak?
JavaScript'in aşağıdaki zaman noktasını hangi tarihe dönüştüreceğini belirleyin:
let date = new Date(2018, 0, 0);
console.log(date); // hangi tarih olacak?
JavaScript'in aşağıdaki zaman noktasını hangi tarihe dönüştüreceğini belirleyin:
let date = new Date(2018, -12, -33);
console.log(date); // hangi tarih olacak?
JavaScript'in aşağıdaki zaman noktasını hangi tarihe dönüştüreceğini belirleyin:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // hangi tarih olacak?
JavaScript'in aşağıdaki zaman noktasını hangi tarihe dönüştüreceğini belirleyin:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // hangi tarih olacak?
JavaScript'in aşağıdaki zaman noktasını hangi tarihe dönüştüreceğini belirleyin:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // hangi tarih olacak?