date-fns Nedir?

date-fns, JavaScript'te tarihlerle çalışmak için kapsamlı, tutarlı ve güvenilir araçlar sunan modern bir JavaScript tarih yardımcı kütüphanesidir. Yerel JavaScript Date nesnesinin birçok tuhaflığı ve tutarsızlığına karşın, date-fns tarih manipülasyonu için modüler, fonksiyonel bir yaklaşım sağlar. Ağaç sarsılabilir (tree‑shakeable) olduğu için yalnızca gerçekten kullandığınız işlevleri dahil edersiniz, bu da paket boyutunuzu minimal tutar. Kütüphane, biçimlendirme ve ayrıştırmadan karşılaştırma, manipülasyon ve tarih yerelleştirmeye kadar her şeyi kapsayan 200'den fazla işlevi destekler.

date-fns Playground Neden Kullanılır?

JavaScript'te tarihlerle çalışmak zor olabilir—zaman dilimleri, biçimlendirme kalıpları ve tarih aritmetiği sık sık beklenmedik sonuçlar doğurur. Bir playground ortamı, date-fns işlevleriyle gerçek zamanlı deney yapmanıza, anlık çıktı görmenize ve tam bir proje kurmadan API'yi öğrenmenize olanak tanır. Biçimlendirme dizelerini test etmek, tarih hesaplamalarını hata ayıklamak veya uygulamanıza entegre etmeden önce tarih mantığını hızlıca prototiplemek için mükemmeldir.

Araç Açıklaması

date-fns Playground, tam date-fns kütüphanesi önceden yüklenmiş interaktif bir kod ortamıdır. Tüm date-fns kütüphanesi dateFns nesnesi üzerinden erişilebilir; böylece 200'den fazla işleve ulaşabilirsiniz. Kod, yazdıkça (debouncing ile) otomatik çalışır ve tüm console.log, console.warn ve console.error çıktıları editörün altındaki yerleşik terminalde gösterilir. Bu, date-fns öğrenmek, tarih işlemlerini test etmek ve farklı biçimlendirme seçenekleriyle denemeler yapmak için idealdir.

Örnekler

Geçerli tarihi biçimlendir:

const now = new Date();
console.log(dateFns.format(now, "MMMM do, yyyy"));
// Output: December 30th, 2025

İki tarih arasındaki gün sayısını hesapla:

const start = new Date(2025, 0, 1);
const end = new Date(2025, 11, 31);
console.log(dateFns.differenceInDays(end, start) + " days");
// Output: 364 days

Bir tarihe zaman ekle:

const today = new Date();
const nextWeek = dateFns.addWeeks(today, 1);
const nextMonth = dateFns.addMonths(today, 1);
console.log("Next week:", dateFns.format(nextWeek, "yyyy-MM-dd"));
console.log("Next month:", dateFns.format(nextMonth, "yyyy-MM-dd"));

Bir tarihin geçmişte mi yoksa gelecekte mi olduğunu kontrol et:

const date = new Date(2024, 5, 15);
console.log("Is past?", dateFns.isPast(date));
console.log("Is future?", dateFns.isFuture(date));

Bir tarih dizesini ayrıştır:

const parsed = dateFns.parse("25/12/2025", "dd/MM/yyyy", new Date());
console.log(dateFns.format(parsed, "EEEE, MMMM do, yyyy"));
// Output: Thursday, December 25th, 2025

Özellikler

  • Tam date-fns Kütüphanesi: dateFns nesnesi aracılığıyla 200+ date-fns işlevine erişim
  • Canlı Kod Çalıştırma: Akıllı debouncing ile yazdıkça kod otomatik çalışır
  • Yerleşik Terminal: Tarayıcı geliştirici araçları olmadan konsol çıktısını anında görüntüle
  • Sözdizimi Vurgulama: Daha iyi kod okunabilirliği için JavaScript sözdizimi vurgulama
  • Hata İşleme: Çalışma zamanı hataları terminal çıktısında net bir şekilde gösterilir

Kullanım Alanları

  • date-fns Öğrenme: Farklı işlevlerle deney yap ve proje kurulumuna gerek kalmadan sonuçları anında gör
  • Tarih Biçimi Testi: İhtiyacınız olan tam çıktı desenini bulmak için farklı format dizelerini deneyin
  • Tarih Hesaplama Prototipleme: İş günleri ekleme, aralık bulma veya tarih karşılaştırma gibi karmaşık tarih aritmetiğini test edin
  • Tarih Mantığını Hata Ayıklama: Projelerinizden tarih ile ilgili kod parçacıklarını izole edip test edin
  • Hızlı Tarih Dönüşümleri: Tarih formatları arasında dönüştürme yapın veya anlık zaman farklarını hesaplayın

Yaygın date-fns Fonksiyonları

Fonksiyon Açıklama Örnek
format Bir tarihi dizeye biçimlendir dateFns.format(date, "yyyy-MM-dd")
parse Bir dizeyi tarihe ayrıştır dateFns.parse("2025-01-01", "yyyy-MM-dd", new Date())
addDays Bir tarihe gün ekle dateFns.addDays(date, 7)
subMonths Bir tarihten ay çıkar dateFns.subMonths(date, 3)
differenceInDays Tarihler arasındaki gün sayısını al dateFns.differenceInDays(dateA, dateB)
isAfter Tarihin başka bir tarihten sonra olup olmadığını kontrol et dateFns.isAfter(dateA, dateB)
isBefore Tarihin başka bir tarihten önce olup olmadığını kontrol et dateFns.isBefore(dateA, dateB)
startOfMonth Ayın ilk gününü al dateFns.startOfMonth(date)
endOfYear Yılın son anını al dateFns.endOfYear(date)
formatDistance İnsan tarafından okunabilir zaman farkı dateFns.formatDistance(dateA, dateB)

Biçim Tokenları Referansı

Token Açıklama Örnek
yyyy 4 haneli yıl 2025
MM 2 haneli ay 01-12
MMMM Tam ay adı January
dd 2 haneli gün 01-31
do Sıra ekli gün 1st, 2nd, 3rd
EEEE Tam hafta günü adı Monday
EEE Kısa hafta günü Mon
HH 24 saatlik saat 00-23
hh 12 saatlik saat 01-12
mm Dakika 00-59
ss Saniye 00-59
a AM/PM AM, PM