JavaScript Development

JavaScript’te Tarih Doğrulamada Ustalaşma

Spread the love

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

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.

Bir yanıt yazın

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