Sağlam web uygulamaları için doğru tarih doğrulaması kritik öneme sahiptir. Yanlış tarih girdileri hatalara ve kötü bir kullanıcı deneyimine yol açabilir. JavaScript, her biri doğruluk, karmaşıklık ve performans açısından farklı avantaj ve dezavantajlara sahip çeşitli yaklaşımlar sunar. Bu makale, üç popüler yöntemi ele almaktadır: moment.js kütüphanesini kullanma, düzenli ifadeleri kullanma ve yerleşik Date.parse()
yöntemini kullanma.
İçerik Tablosu
- moment.js ile Tarih Doğrulama
- Düzenli İfadelerle Tarih Doğrulama
Date.parse()
ile Tarih Doğrulama- Doğru Yöntemi Seçme
moment.js ile Tarih Doğrulama
moment.js kütüphanesi, tarih manipülasyonu ve ayrıştırma için güçlü ve yaygın olarak kullanılan bir araçtır. isValid()
fonksiyonu, tarihleri doğrulamak için basit ve güvenilir bir yol sağlar. Projenize moment.js’i eklemeniz gerekecektir (örneğin, bir CDN veya npm aracılığıyla).
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js"></script>
function isValidDateMoment(dateString, format = 'YYYY-MM-DD') {
return moment(dateString, format, true).isValid();
}
let date1 = "2024-03-15";
let date2 = "2024-13-15"; // Geçersiz ay
let date3 = "2024-02-29"; // Geçerli artık gün
let date4 = "2024-02-30"; // Şubat için geçersiz gün
let date5 = "Mart 15, 2024"; // Farklı format
console.log(isValidDateMoment(date1)); // true
console.log(isValidDateMoment(date2)); // false
console.log(isValidDateMoment(date3)); // true (2024 artık yıl ise)
console.log(isValidDateMoment(date4)); // false
console.log(isValidDateMoment(date5, "MMMM DD, YYYY")); // true
format
parametresi, beklenen tarih formatını belirtmenizi sağlar. true
bayrağı sıkı ayrıştırmayı sağlar.
Düzenli İfadelerle Tarih Doğrulama
Düzenli ifadeler daha manuel bir yaklaşım sunar. Güçlü olsalar da, tüm tarih nüanslarını (artık yıllar, ay uzunlukları) işleyen bir düzenli ifade oluşturmak karmaşık ve hataya açık olabilir. Basit bir düzenli ifade yalnızca formatı, tarihin geçerliliğini değil kontrol eder.
function isValidDateRegex(dateString) {
// Bu çok basit bir örnektir ve TÜM sınır durumlarını işlemez!
return /^d{4}-d{2}-d{2}$/.test(dateString);
}
let date1 = "2024-03-15";
let date2 = "2024-13-15";
let date3 = "2024-02-30";
console.log(isValidDateRegex(date1)); // true (ancak eksik doğrulama)
console.log(isValidDateRegex(date2)); // true (yanlış bir şekilde doğrular)
console.log(isValidDateRegex(date3)); // true (yanlış bir şekilde doğrular)
Sağlam doğrulama için, çok daha gelişmiş bir düzenli ifadeye ihtiyaç vardır, bu da bu yaklaşımı moment.js gibi bir kütüphane kullanmaktan daha az pratik hale getirir.
Date.parse()
ile Tarih Doğrulama
Yerleşik Date.parse()
yöntemi, bir tarih dizesini bir zaman damgasına dönüştürmeye çalışır. Bununla birlikte, tarayıcılar arasında oldukça tutarsızdır ve esnek ayrıştırma yanlış pozitiflere yol açabilir.
function isValidDateParse(dateString) {
const timestamp = Date.parse(dateString);
return !isNaN(timestamp);
}
let date1 = "2024-03-15";
let date2 = "2024-13-15";
let date3 = "2024-02-30";
console.log(isValidDateParse(date1)); // true
console.log(isValidDateParse(date2)); // true (yanlış bir şekilde doğrular)
console.log(isValidDateParse(date3)); // true (yanlış bir şekilde doğrular)
Güvenilir olmaması nedeniyle, Date.parse()
genellikle sıkı tarih doğrulaması için önerilmez.
Doğru Yöntemi Seçme
Güvenilir ve doğru tarih doğrulaması için, moment.js tercih edilen yöntemdir. Kullanım kolaylığı, doğruluk ve sağlamlık arasında bir denge sunar. Düzenli ifadeler güçlü olsa da, karmaşıklıkları, son derece özel performans gereksinimleri olmadığı sürece kapsamlı tarih doğrulaması için daha az uygun hale getirir. Tutarsızlıkları nedeniyle sıkı doğrulama için Date.parse()
‘ı kullanmaktan kaçının.