Merhaba Webkolog'un Zaman Yolcuları! :)
Bugün JavaScript'in en sık kullanılan, ancak bazen en çok kafa karıştıran nesnelerinden birini, yani Date Nesnesini inceleyeceğiz. Web uygulamalarında tarih ve saat verileriyle çalışmak neredeyse kaçınılmazdır: kullanıcı kayıt tarihlerini göstermekten, etkinlik takvimleri oluşturmaya, zamanlayıcılardan yaş hesaplamalarına kadar birçok senaryoda Date nesnesine ihtiyaç duyarız. JavaScript'in yerleşik Date nesnesi, bu karmaşık zaman kavramlarını yönetmemiz için bize güçlü bir arayüz sunar. Hadi, zamanı kodla yakalamanın inceliklerini öğrenelim!
Date Nesnesi Nedir ve Neden Önemlidir?
JavaScript'teki Date nesnesi, tarihleri ve saatleri temsil etmek ve bu değerler üzerinde işlem yapmak için kullanılır. Tarih ve saat bilgileri genellikle UTC (Koordineli Evrensel Zaman), yani Greenviç Ortalama Zamanı (GMT) ile aynı olan uluslararası bir standart temel alınarak saklanır. Ancak, bu değerleri kullanıcıya gösterirken veya kullanıcıdan alırken yerel saat dilimleri devreye girer.
Date nesnesi, 1 Ocak 1970 UTC'den (Unix Epoch) bu yana geçen milisaniye sayısını temel alır. Bu milisaniye değeri, bir tarih ve saat noktasını benzersiz bir şekilde temsil eder.
Date nesnesi, şu gibi durumlarda bize yardımcı olur:
- Mevcut tarih ve saati almak.
- Belirli bir tarih ve saati oluşturmak.
- Tarih ve saat bileşenlerini (yıl, ay, gün, saat vb.) almak veya ayarlamak.
- Tarihleri biçimlendirmek ve karşılaştırmak.
- Farklı zaman dilimleriyle çalışmak.
Date Nesnesi Oluşturma
Date nesnesini oluşturmanın birkaç yolu vardır:
1. Mevcut Tarih ve Saati Alma
Argüman vermeden new Date()
çağırırsanız, o anki tarih ve saati içeren bir Date nesnesi oluşturulur.
const simdi = new Date();
console.log(simdi); // Örnek: Fri Jul 05 2024 02:17:47 GMT+0300 (GMT+03:00)
2. Belirli Bir Tarih ve Saat ile Oluşturma
Farklı argümanlarla belirli bir tarih ve saat oluşturabilirsiniz:
new Date(year, month, day, hours, minutes, seconds, milliseconds)
: Bu, en yaygın ve esnek yöntemdir. Ay (month) 0'dan başlar (Ocak: 0, Aralık: 11). Diğerleri normal sayıdır.
// 15 Ağustos 2024, 14:30:00
const dogumGunu = new Date(2024, 7, 15, 14, 30, 0);
console.log(dogumGunu); // Thu Aug 15 2024 14:30:00 GMT+0300 (GMT+03:00)
// Sadece yıl ve ay (gün 1 olarak kabul edilir, saat 00:00:00)
const sadeceAy = new Date(2024, 10); // 1 Kasım 2024
console.log(sadeceAy);
new Date(milliseconds)
: 1 Ocak 1970 UTC'den bu yana geçen milisaniye sayısına göre bir tarih oluşturur.
const milisaniyeTarih = new Date(0); // 1 Ocak 1970 UTC (Yerel saate göre değişir)
console.log(milisaniyeTarih); // Thu Jan 01 1970 ...
const onDakikaSonra = new Date(Date.now() + 10 * 60 * 1000);
console.log(onDakikaSonra);
new Date(dateString)
: Bir tarih string'ini ayrıştırarak bir tarih nesnesi oluşturmaya çalışır. Farklı formatları destekleyebilir, ancak tarayıcılar arası tutarlılık sorunları yaşanabileceği için belirli bir format kullanmak daha güvenlidir (örneğin ISO 8601).
const stringTarih = new Date("2024-07-15T10:00:00Z"); // ISO 8601 formatı (UTC)
console.log(stringTarih);
const stringTarih2 = new Date("July 15, 2024 10:00:00"); // Bazı tarayıcılar tarafından desteklenir
console.log(stringTarih2);
Date Nesnesi Metotları (Yerel Zamana Göre)
Bu metotlar, kullanıcının yerel zaman dilimine göre tarih ve saat bileşenlerini almanızı veya ayarlamanızı sağlar.
1. Tarih Bileşenlerini Alma
getDate()
: Ayın gününü döndürür (1-31).const tarih = new Date(); // Şu anki tarih console.log(tarih.getDate()); // Ayın günü (örneğin 5)
getDay()
: Haftanın gününü döndürür (0=Pazar, 1=Pazartesi, ..., 6=Cumartesi).console.log(tarih.getDay()); // Haftanın günü (örneğin 5 = Cuma)
getMonth()
: Ayı döndürür (0=Ocak, ..., 11=Aralık).console.log(tarih.getMonth()); // Ay (örneğin 6 = Temmuz)
getFullYear()
: Dört basamaklı yılı döndürür.console.log(tarih.getFullYear()); // Yıl (örneğin 2024)
2. Saat Bileşenlerini Alma
getHours()
: Saati döndürür (0-23).console.log(tarih.getHours()); // Saat (örneğin 2)
getMinutes()
: Dakikayı döndürür (0-59).console.log(tarih.getMinutes()); // Dakika (örneğin 17)
getSeconds()
: Saniyeyi döndürür (0-59).console.log(tarih.getSeconds()); // Saniye (örneğin 47)
getMilliseconds()
: Milisaniyeyi döndürür (0-999).console.log(tarih.getMilliseconds()); // Milisaniye
getTime()
: 1 Ocak 1970 UTC'den bu yana geçen milisaniye sayısını döndürür.console.log(tarih.getTime()); // Örnek: 1720135067890
3. Tarih ve Saat Bileşenlerini Ayarlama
get...()
metotlarına karşılık gelen set...()
metotları bulunur. Örneğin:
setDate(day)
: Ayın gününü ayarlar.const yarin = new Date(); yarin.setDate(yarin.getDate() + 1); // Tarihi bir gün ileri alır console.log(yarin.toDateString());
setMonth(month, day)
: Ayı ayarlar. İsteğe bağlı olarak günü de ayarlayabilirsiniz.const gelecektekiAy = new Date(); gelecektekiAy.setMonth(gelecektekiAy.getMonth() + 1); // Ayı bir ay ileri alır console.log(gelecektekiAy.toDateString());
setFullYear(year, month, day)
: Yılı ayarlar. İsteğe bağlı olarak ay ve günü de ayarlayabilirsiniz.const yeniYil = new Date(); yeniYil.setFullYear(2025); console.log(yeniYil.toDateString());
setHours(hours, minutes, seconds, milliseconds)
: Saati ayarlar.const simdi = new Date(); simdi.setHours(simdi.getHours() + 2); // Saati 2 saat ileri alır console.log(simdi.toLocaleTimeString());
setTime(milliseconds)
: 1 Ocak 1970 UTC'den itibaren geçen milisaniye sayısını ayarlayarak tarihi ve saati belirler.const sifirTarihi = new Date(); sifirTarihi.setTime(0); console.log(sifirTarihi.toUTCString()); // Thu, 01 Jan 1970 00:00:00 GMT
UTC (Evrensel Zaman) Metotları
Yukarıdaki metotların çoğunun, zaman diliminden bağımsız olarak UTC zamanını döndüren veya ayarlayan getUTC...()
ve setUTC...()
versiyonları da vardır.
getUTCDate()
,getUTCMonth()
,getUTCFullYear()
,getUTCHours()
, vb.setUTCDate()
,setUTCMonth()
,setUTCFullYear()
,setUTCHours()
, vb.getTimezoneOffset()
: Yerel zaman dilimi ile UTC arasındaki dakika cinsinden farkı döndürür.const now = new Date(); console.log(now.getTimezoneOffset()); // Örnek: -180 (Türkiye için -3 saat * 60 dakika)
Date Nesnesini String'e Dönüştürme ve Biçimlendirme
Date nesnesini kullanıcıya okunabilir bir formatta göstermek için çeşitli string dönüştürme metotları bulunur:
toString()
: Tarihi, saat dilimi bilgisiyle birlikte tam bir string olarak döndürür.const tarih = new Date(); console.log(tarih.toString()); // Fri Jul 05 2024 02:17:47 GMT+0300 (GMT+03:00)
toDateString()
: Tarihin sadece gün, ay, yıl kısmını okunabilir bir string olarak döndürür.console.log(tarih.toDateString()); // Fri Jul 05 2024
toTimeString()
: Saatin sadece saat dilimi bilgisiyle birlikte string olarak döndürür.console.log(tarih.toTimeString()); // 02:17:47 GMT+0300 (GMT+03:00)
toLocaleString()
: Tarih ve saati kullanıcının yerel ayar formatına göre bir string olarak döndürür.console.log(tarih.toLocaleString('tr-TR')); // 5.07.2024 02:17:47 console.log(tarih.toLocaleString('en-US')); // 7/5/2024, 2:17:47 AM
toLocaleDateString()
: Sadece tarihi kullanıcının yerel ayar formatına göre string olarak döndürür.console.log(tarih.toLocaleDateString('tr-TR')); // 5.07.2024
toLocaleTimeString()
: Sadece saati kullanıcının yerel ayar formatına göre string olarak döndürür.console.log(tarih.toLocaleTimeString('tr-TR')); // 02:17:47
toUTCString()
: Tarihi UTC formatında bir string olarak döndürür.console.log(tarih.toUTCString()); // Fri, 05 Jul 2024 02:17:47 GMT
toISOString()
(ES6+): Tarihi ISO 8601 formatında bir string olarak döndürür (YYYY-MM-DDTHH:mm:ss.sssZ). Bu format, genellikle sunucular arası veri alışverişi için tercih edilir.console.log(tarih.toISOString()); // 2024-07-04T23:17:47.890Z (UTC saati) // YYYY-MM-DD formatında tarih almak için pratik yol const bugunISO = new Date().toISOString().slice(0, 10); console.log(bugunISO); // 2024-07-05
Statik Metotlar
Date.now()
(ES5+): 1 Ocak 1970 UTC'den bu yana geçen milisaniye sayısını döndürür. Performans ölçümü veya benzersiz zaman damgaları oluşturmak için idealdir.const baslangicZamani = Date.now(); // ... bazı işlemler ... const bitisZamani = Date.now(); console.log(`İşlem ${bitisZamani - baslangicZamani} milisaniye sürdü.`);
Date.parse(dateString)
: Bir tarih string'ini ayrıştırır ve 1 Ocak 1970 UTC'den bu yana geçen milisaniye sayısını döndürür. Başarısız olursaNaN
döndürür.console.log(Date.parse("2024-07-15")); // 1721001600000
Date.UTC(year, month, day, hours, minutes, seconds, milliseconds)
: UTC'ye göre bir tarih oluşturur ve 1 Ocak 1970 UTC'den bu yana geçen milisaniye sayısını döndürür.console.log(Date.UTC(2024, 6, 15)); // 1721001600000 (15 Temmuz 2024 00:00:00 UTC)
Sonuç
JavaScript'in Date nesnesi, web uygulamalarınızda tarih ve saatle ilgili hemen hemen her ihtiyacınızı karşılayacak zengin bir araç setidir. Anlık zamanı almaktan, belirli bir tarih oluşturmaya, bileşenleri ayıklamaktan, farklı formatlarda görüntülemeye ve hatta zaman dilimleriyle çalışmaya kadar geniş bir yelpazede fonksiyonlar sunar. Başlangıçta biraz karmaşık görünebilse de, UTC ve yerel zaman kavramlarını kavradıkça ve metotları kullanarak pratik yaptıkça bu nesnede ustalaşacaksınız.
Uygulamalarınızda zamanı etkin bir şekilde yönetmek için bu metotları kullanmaktan çekinmeyin. Zaman her şeydir, değil mi?
Webkolog'u takipte kalın!
Hepinize bol kodlu ve keyifli öğrenme süreçleri dilerim!
0 yorum:
Yorum Gönder