Emre

WFN Üye
Konular
1,662
Mesajlar
1,758
Çözüm
0
Ticaret Puanı
0
Üyelik
9 Ay 4 Gün
Konum
Samsun
Web Sitesi
Var
Alanı
WordPress Uzm.
1/1
Konu sahibi
Bir Date nesnesini YYYY-MM-DD biçimine çevirmek için önce tarihin hangi saat dilimine göre yazılacağına karar verin. UTC tarihi gerekiyorsa tarih.toISOString().slice(0, 10) kullanabilirsiniz. Cihazın veya sunucunun yerel takvim tarihi gerekiyorsa yıl, ay ve günü yerel tarih metotlarıyla birleştirin. İki yöntem aynı an için farklı günler verebilir.

UTC tarihini alma​


Aşağıdaki örneği tarayıcının geliştirici konsolunda veya bir JavaScript dosyasında çalıştırabilirsiniz:

JavaScript:
const tarih = new Date("2026-05-10T00:30:00+03:00");
const sonuc = tarih.toISOString().slice(0, 10);

console.log(sonuc); // 2026-05-09

toISOString(), tarihi UTC saat diliminde metne çevirir; slice(0, 10) ise dört basamaklı yıllarda tarih bölümünü alır. Örnekte girilen an, UTC+3 bölgesinde 10 Mayıs olsa da UTC'de henüz 9 Mayıs'tır. Sonuç bu nedenle hatalı değildir; ancak yerel takvim gününün de 9 Mayıs olduğunu göstermez.

Bu kısa yöntem dört basamaklı yıllar içindir. JavaScript'in desteklediği daha geniş yıl aralığında ISO çıktısı farklı uzunlukta bir yıl içerebilir; böyle tarihleri işlemeniz gerekiyorsa çıktı biçimini ayrıca ele alın.

Yerel takvim tarihini alma​


Tarih, kodun çalıştığı cihazın veya sunucunun saat dilimine göre gösterilecekse şu işlevi kullanın:

JavaScript:
function yerelTarihBicimlendir(tarih) {
  if (!(tarih instanceof Date) || Number.isNaN(tarih.getTime())) {
    throw new TypeError("Geçerli bir Date nesnesi girin.");
  }

  const yil = tarih.getFullYear();
  if (yil < 0 || yil > 9999) {
    throw new RangeError("Yıl 0000 ile 9999 arasında olmalıdır.");
  }

  const ay = String(tarih.getMonth() + 1).padStart(2, "0");
  const gun = String(tarih.getDate()).padStart(2, "0");
  return `${String(yil).padStart(4, "0")}-${ay}-${gun}`;
}

const tarih = new Date(2026, 4, 10, 0, 30);
console.log(yerelTarihBicimlendir(tarih)); // 2026-05-10

Bu örnekte new Date(2026, 4, 10, 0, 30), kodun çalıştığı ortamın yerel saatine göre 10 Mayıs 2026'yı oluşturur. Ay numarası sıfırdan başladığı için kurucudaki 4 Mayıs'ı belirtir; aynı nedenle getMonth() sonucuna bir eklenir. padStart() ise tek basamaklı ay ve günlerin başına sıfır ekler.

Sonuç bir tarih nesnesi değil, 2026-05-10 gibi bir metindir; gerekli yerde bu metni kullanabilirsiniz. Sunucuda çalıştırıldığında yerel saat dilimi ziyaretçininkinden farklı olabileceği için, hangi ortamın takvim gününü istediğinizi uygulamanızda belirleyin.

Girdi ve hata kontrolü​


Invalid Date veya RangeError: Invalid time value görürseniz, biçimlendirmeden önce kaynaktan gelen değerin geçerli bir tarihe dönüştürülüp dönüştürülmediğini kontrol edin. Yukarıdaki işlev geçersiz Date nesnesini de yakalar. UTC yönteminde de önce Number.isNaN(tarih.getTime()) ile kontrol yapabilirsiniz.

Yalnızca bir takvim günü temsil eden "2026-05-10" gibi bir metin zaten istenen biçimdedir; saat dilimi dönüşümü gerekmiyorsa onu değiştirmeden kullanın. Böyle bir metni new Date("2026-05-10") ile oluşturmak tarihi UTC olarak yorumlar; ardından yerel metotları kullanmak bazı saat dilimlerinde önceki günü verebilir. Ayrıca bir değerin Date tarafından kabul edilmesi, girilen takvim tarihinin gerçekten geçerli olduğunu her durumda kanıtlamaz; kullanıcı girdisini biçim ve takvim günü açısından ayrıca doğrulayın.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic