JavaScript Dilinde JS Dates Kullanımı
JavaScript'te tarih ve saat verilerini yönetmek, görüntülemek ve üzerinde işlem yapmak için yerleşik Date nesnesi kullanılır. Bu nesne, milisaniyeler cinsinden zamanı temsil eder ve 1 Ocak 1970 UTC (Evrensel Eşgüdümlü Saat) tarihinden bu yana geçen süreyi temel alır. Date nesnesi ile mevcut tarihi ve saati alabilir, belirli bir tarihi oluşturabilir, tarih bileşenlerini değiştirebilir ve farklı formatlarda görüntüleyebilirsiniz.
Sözdizimi
Date nesnesi, new Date() yapıcı fonksiyonu kullanılarak dört farklı şekilde oluşturulabilir:
new Date(): Mevcut tarih ve saati içeren birDatenesnesi oluşturur.new Date(milisaniye): 1 Ocak 1970 UTC'den bu yana geçen milisaniye sayısını temsil eden birDatenesnesi oluşturur.new Date(tarihDizisi): Bir tarih dizisini (örneğin, "2023-10-26" veya "October 26, 2023 10:30:00") ayrıştırarak birDatenesnesi oluşturur.new Date(yıl, ay, gün, saat, dakika, saniye, milisaniye): Belirli tarih ve saat bileşenleriyle birDatenesnesi oluşturur. Ay değeri 0'dan (Ocak) 11'e (Aralık) kadar indeklenmiştir.
Detaylı Açıklama
Date nesnesinin yapıcı fonksiyonları ve yöntemleri, tarih ve saat manipülasyonu için güçlü araçlar sunar:
new Date(): Argüman olmadan çağrıldığında,Datenesnesi, komutun çalıştırıldığı yerel sistemin mevcut tarih ve saatini temsil eder.new Date(milisaniye): Bu yapıcı,new Date(0)ile 1 Ocak 1970 UTC başlangıcını temsil eder. Pozitif değerler bu tarihten sonrasını, negatif değerler ise öncesini ifade eder. Örneğin,new Date(86400000)1 Ocak 1970 UTC'den 24 saat sonrasını temsil eder.new Date(tarihDizisi): JavaScript, çeşitli ISO 8601 formatlarını (örneğin, "YYYY-MM-DD", "YYYY-MM-DDTHH:mm:ssZ") ve tarayıcıya özgü bazı diğer tarih dizisi formatlarını ayrıştırabilir. Ancak, tarayıcılar arası tutarlılık için ISO 8601 formatları tercih edilmelidir.new Date(yıl, ay, gün, saat, dakika, saniye, milisaniye): Bu yapıcı, tarih bileşenlerini doğrudan belirterek kesin bir tarih ve saat oluşturmanıza olanak tanır.ayparametresinin 0-indeksli olduğunu unutmamak önemlidir. Örneğin, Ekim ayı için9değeri kullanılır.gün,saat,dakika,saniyevemilisaniyeparametreleri isteğe bağlıdır ve belirtilmezse varsayılan olarak1(gün için) veya0(diğerleri için) değerini alırlar.
Date nesnesinin birçok yöntemi vardır. Bunlar genellikle iki kategoriye ayrılır: yerel zaman dilimine göre (getFullYear(), getMonth()) ve UTC'ye göre (getUTCFullYear(), getUTCMonth()) çalışan yöntemler. Benzer şekilde, tarih bileşenlerini ayarlamak için setFullYear() veya setUTCFullYear() gibi yöntemler mevcuttur.
Pratik Kullanım Örnekleri
Mevcut tarih ve saati alıp görüntüleme:
const simdi = new Date();
console.log(simdi); // Örnek çıktı: Thu Oct 26 2023 10:30:00 GMT+0300 (Türkiye Standart Saati)
console.log(simdi.toLocaleDateString()); // Örnek çıktı: 26.10.2023
console.log(simdi.toLocaleTimeString()); // Örnek çıktı: 10:30:00
console.log(simdi.toISOString()); // Örnek çıktı: 2023-10-26T07:30:00.000Z (UTC formatında)Belirli bir tarih ve saat oluşturma:
// Yıl, ay (0-indeksli), gün, saat, dakika, saniye, milisaniye
const dogumGunu = new Date(1990, 4, 15, 12, 0, 0, 0); // 15 Mayıs 1990, 12:00:00
console.log(dogumGunu.toDateString()); // Örnek çıktı: Tue May 15 1990
// Tarih dizisi kullanarak
const yaziIleTarih = new Date("2024-01-20T14:30:00Z"); // UTC olarak 20 Ocak 2024, 14:30:00
console.log(yaziIleTarih.toLocaleString()); // Tarayıcının yerel ayarına göre görüntülenirTarih bileşenlerini alma:
const bugun = new Date();
const yil = bugun.getFullYear(); // Yılı alır (örneğin, 2023)
const ay = bugun.getMonth();   // Ayı alır (0-11, Ocak 0'dır)
const gun = bugun.getDate();    // Ayın gününü alır (1-31)
const gunAdi = bugun.getDay();  // Haftanın gününü alır (0-6, Pazar 0'dır)
const saat = bugun.getHours();  // Saati alır (0-23)
const dakika = bugun.getMinutes(); // Dakikayı alır (0-59)
const saniye = bugun.getSeconds(); // Saniyeyi alır (0-59)
const milisaniye = bugun.getMilliseconds(); // Milisaniyeyi alır (0-999)
const zamanDamgasi = bugun.getTime(); // 1 Ocak 1970'ten bu yana geçen milisaniye sayısı
console.log(`Yıl: ${yil}, Ay: ${ay + 1}, Gün: ${gun}, Saat: ${saat}:${dakika}`);Tarih bileşenlerini ayarlama:
const gelecektekiTarih = new Date();
gelecektekiTarih.setFullYear(2025);
gelecektekiTarih.setMonth(0); // Ocak
gelecektekiTarih.setDate(1); // Ayın 1. günü
gelecektekiTarih.setHours(9);
gelecektekiTarih.setMinutes(0);
gelecektekiTarih.setSeconds(0);
gelecektekiTarih.setMilliseconds(0);
console.log(gelecektekiTarih.toLocaleString()); // Örnek çıktı: 1.01.2025 09:00:00Tarihler arası fark hesaplama:
const tarih1 = new Date('2023-10-01');
const tarih2 = new Date('2023-10-31');
const farkMilisaniye = tarih2.getTime() - tarih1.getTime();
const farkGun = farkMilisaniye / (1000 * 60 * 60 * 24);
console.log(`İki tarih arasındaki gün farkı: ${farkGun}`); // Çıktı: 30Önemli Notlar
Ay İndekslemesi:
Datenesnesinin yapıcı fonksiyonunda vegetMonth(),setMonth()gibi yöntemlerinde ay değerleri 0'dan 11'e kadar indekslenir (0 = Ocak, 11 = Aralık). Bu yaygın bir hata kaynağıdır.Saat Dilimi Farklılıkları:
Datenesnesi, genellikle yerel saat dilimini kullanır. Ancak,getUTCFullYear(),setUTCHours()gibiUTCön ekli yöntemler, Evrensel Eşgüdümlü Saat'e göre işlem yapar. Bu durum, özellikle uluslararası uygulamalarda veya sunucu-istemci iletişimi sırasında önemlidir. Tarihleri UTC formatında depolayıp, kullanıcının yerel saat dilimine göre görüntülemek iyi bir pratiktir.String Ayrıştırma Güvenilirliği:
new Date(tarihDizisi)yapıcı fonksiyonu, farklı tarayıcılarda ve JavaScript motorlarında farklı dizileri ayrıştırabilir. En güvenilir yöntem, ISO 8601 formatında tarih dizileri kullanmak (örneğin, "YYYY-MM-DDTHH:mm:ss.sssZ" veya "YYYY-MM-DD").Date.now(): Bu statik yöntem, 1 Ocak 1970 UTC'den bu yana geçen milisaniye sayısını döndürür ve birDatenesnesi oluşturmadan anlık zaman damgasını almak için hızlı bir yoldur. Performans açısındannew Date().getTime()'dan daha etkilidir.Geçersiz Tarihler: Geçersiz bir tarih oluşturmaya çalışırsanız (örneğin, 31 Şubat),
Datenesnesi "Invalid Date" (Geçersiz Tarih) döndürür. Bu durumuisNaN(date.getTime())ile kontrol edebilirsiniz.
        
                
            
            
Yorum yap
Yorumlar