“JavaScript Date Objeleri”

“JavaScript Date Objeleri”

“Zaman akar, JavaScript hesaplar… bazen yanlış ama niyeti iyi.”

JavaScript’te tarih-saat işlemleri yapman gereken ilk an genelde şudur:

“Şu tarihi alayım… 3 gün ekleyeyim… ekrana yazdırayım…”

Ve Date objesi arkadan fısıldar:

“Aylar 0’dan başlıyor bu arada 😏”


🧠 1️⃣ Date Objesi Nedir? (Kısa Ama Hayati)

Date, JavaScript’in:

  • Tarih
  • Saat
  • Gün
  • Ay
  • Yıl
  • Milisaniye

gibi zamanla ilgili her şeyi yöneten yerleşik (built-in) objesidir.

Ama şunu bil:

JavaScript zamanı string olarak değil,
1 Ocak 1970’ten beri geçen milisaniye olarak tutar.

Evet… Zamanın başlangıcı JavaScript’e göre 1970.
Öncesi yok. Dinozorlar üzgün 🦖


🧱 2️⃣ Date Objesi Oluşturma Yöntemleri (Gerçek Hayatta Kullanılanlar)

🟢 A) Şu Anki Tarih ve Saat

const now = new Date();
console.log(now);

📌 Bu ne yapar?

  • Kod çalıştığı o anın tarih ve saatini alır.

📌 Ne zaman kullanılır?

  • “Şu an” bilgisi
  • Log tutma
  • Form gönderme zamanı
  • Sayaç, geri sayım, süre ölçme

🟢 B) String ile Tarih Oluşturma (EN GÜVENLİ YOL)

const meetingDate = new Date("2026-01-05");
console.log(meetingDate);

🎯 ISO Format kullanıyoruz:

YYYY-MM-DD

📌 Neden?

  • Tüm tarayıcılarda aynı sonucu verir
  • “Bu Chrome’da çalıştı ama Safari çöktü” dramalarını önler

❌ ŞUNU YAPMA:

new Date("05-01-2026"); // Tarayıcı kavgası çıkar


🟢 C) Sayılarla Date (Burada Tuzak Var ⚠️)

const date = new Date(2026, 0, 5);

Bu ne demek?

  • Yıl: 2026
  • Ay: 0 (Ocak)
  • Gün: 5

📌 Aylar 0’dan başlar

  • 0 → Ocak
  • 1 → Şubat
  • 11 → Aralık

JavaScript burada diyor ki:

“Ayları ezberlemeden gelme.”


🔍 3️⃣ Date’ten Bilgi Alma (Getter Metotları)

const d = new Date();

📅 Yıl – Ay – Gün

d.getFullYear(); // 2026
d.getMonth();    // 0 - 11
d.getDate();     // Ayın günü (1-31)

🧠 İPUCU:

  • getMonth() insan dostu değil
  • Ekrana yazdırırken +1 yap

📆 Haftanın Günü

d.getDay(); // 0 - 6

  • 0 → Pazar
  • 1 → Pazartesi
  • 6 → Cumartesi

📌 getDay() ≠ getDate()

MetotNe verir
getDay()Haftanın günü
getDate()Ayın günü

Bu hatayı yapan herkesin yolu bir gün frontend’e düşer 😄


⏰ Saat – Dakika – Saniye

d.getHours();   
d.getMinutes();
d.getSeconds();
d.getMilliseconds();

🎯 Kullanım alanları:

  • Dijital saat
  • Canlı yayın süresi
  • Quiz süreleri
  • “Bu kullanıcı 3 saniyede mi tıkladı?” analizleri

🛠️ 4️⃣ Date Değiştirme (Setter’lar)

const d = new Date();

d.setFullYear(2030);
d.setMonth(11); // Aralık
d.setDate(25);

🎄 Artık tarih: 25 Aralık 2030

📌 Güzel tarafı:

  • JavaScript taşmaları otomatik hesaplar

➕➖ 5️⃣ Tarihe Gün / Saat / Ay Ekleme (EN PRATİK BÖLÜM)

➕ 1 Gün Ekle

const today = new Date();
today.setDate(today.getDate() + 1);

📌 Ne oldu?

  • Önce bugünün günü alındı
  • Üzerine 1 eklendi
  • Date objesi kendini güncelledi

🧠 Ay sonuysa?

  • 31 Ocak + 1 → 1 Şubat
    JavaScript burada seni yarı yolda bırakmaz 👏

➖ 7 Gün Çıkar

const d = new Date();
d.setDate(d.getDate() - 7);

🎯 “Bir hafta önce” hesapları için birebir.


⏰ Saat Ekleme

const d = new Date();
d.setHours(d.getHours() + 3);

Kullanım:

  • Timezone farkları
  • Yayın saati hesaplama

⏳ 6️⃣ Timestamp Gerçeği (Zamanın Ham Hali)

Date.now();

Bu ne döner?
👉 1970’ten beri geçen milisaniye

Alternatif:

new Date().getTime();

📌 Nerede kullanılır?

  • Süre ölçme
  • Performans testi
  • Event sıralama
  • Cache kontrolü

⏱️ 7️⃣ Süre Ölçme (Gerçek Hayat Örneği)

const start = Date.now();

// ağır işlem 😅
for (let i = 0; i < 1_000_000; i++) {}

const end = Date.now();
console.log(`İşlem süresi: ${end - start} ms`);

🎯 Bu sayede:

  • Kodun yavaş mı hızlı mı görürsün
  • “Bu fonksiyon neden kasıyor?” sorusuna cevap bulursun

🌍 8️⃣ Tarihi İnsan Gibi Gösterme (ÇOK ÖNEMLİ)

❌ BUNU ASLA GÖSTERME:

console.log(new Date());

Kullanıcı:

“Bu ne abi?”


✅ Locale ile Göster

const d = new Date();

d.toLocaleDateString("tr-TR"); 
// 05.01.2026

d.toLocaleString("en-US");
// 1/5/2026, 10:23:00 AM

📌 Altın Kural:

Kullanıcıya her zaman locale formatlı tarih göster.


😬 9️⃣ Date Objesinin Karanlık Yüzü

Dürüst olalım:

❌ Aylar 0’dan başlar
❌ Timezone kafası karışık
❌ Formatlama zahmetli
❌ Okunabilirlik düşük

Bu yüzden:

  • dayjs
  • date-fns

kullanılır.

AMA 👇

Date’i bilmeden kütüphane kullanmak,
debriyajsız araba sürmek gibidir.


🎯 SONUÇ: Date ile Barış İmzala

  • Date objesi zor ama güçlü
  • Temelini bilirsen işini görür
  • Büyük projede kütüphane ile rahat edersin

Comments

No comments yet. Why don’t you start the discussion?

Bir yanıt yazın

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