Eleventy’de tarih formatını Türkçe ve istediğimiz biçimde gösterebilmek için filtreler kullanabiliyoruz.
Bunun için JavaScript’teki toLocaleString()
metodunu kullanıyoruz.
toLocaleString Metodu
toLocaleString()
için iki parametremiz var; biri options
diğeri de locales
. .toLocaleString(locales, options)
şeklinde kullanılıyor. Bizim durumumuzda locales kısmı tr-TR
oluyor. Options için ise tarih ve saat biçimini değiştirebilmek adına bolca seçenek var.
Options | Alabileceği Değerler |
---|---|
dateStyle | ”full”, “long”, “medium”, “short” |
timeStyle | ”full”, “long”, “medium”, “short” |
timeZone | Saat dilimi |
hour12 | ”true”, “false” |
hourCycle | ”h11”, “h12”, “h23”, “h24” |
weekday | ”long”, “short”, “narrow” |
year | ”2-digit”, “numeric” |
month | ”2-digit”, “long”, “narrow”, “numeric”, “short” |
day | ”2-digit”, “numeric” |
hour | ”2-digit”, “numeric” |
minute | ”2-digit”, “numeric” |
second | ”2-digit”, “numeric” |
timeZoneName | ”long”, “short” |
Örneklerin hepsi için locales
değeri olarak tr-TR
kullanılmıştır.
timeZone
Bu ayar saat dilimini belirlemek için kullanılıyor. Bizim için buna verilecek değer Europe/Istanbul
olacak.
dateStyle
Tarih stilini belirlemek için kullanılır.
- full : 6 Nisan 2021 Salı
- long : 6 Nisan 2021
- medium : 6 Nis 2021
- short : 6.04.2021
timeStyle
Saat stilini belirlemek için kullanılır.
- full : 17:01:34 GMT+03:00
- long : 17:01:44 GMT+3
- medium : 17:01:56
- short : 17:02
hour12
12 saat veya 24 saat formatı için kullanılır. true
ile 12 saat formatı, false
ile 24 saat formatı kullanılır.
- true : 5:08:30
- false : 17:08:30
hourCycle
Gece yarısı başlangıçları.
- h11 : 12:00 ÖS
- h12 : 00:00 ÖS
- h23 : 00:00
- h24 : 24:00
weekday
Haftanın günü stilini belirlemek için kullanılır.
- long : Salı
- short : Sal
- narrow : S
year
Yıl stilini belirlemek için kullanılır.
- 2-digit : 21
- numeric : 2021
month
Ay stilini belirlemek için kullanılır.
- 2-digit : 04
- long : Nisan
- narrow : N
- numeric : 4
- short : Nis
day
Gün stilini belirlemek için kullanılır.
- 2-digit : 06
- numeric : 6
hour
Saat stilini belirlemek için kullanılır.
- 2-digit : 05
- numeric : 5
minute
Dakika stilini belirlemek için kullanılır.
- 2-digit : 05
- numeric : 5
second
Saniye stilini belirlemek için kullanılır.
- 2-digit : 05
- numeric : 5
timeZoneName
Saat dilimi stilini belirlemek için kullanılır.
- long : GMT+03:00
- short : GMT+3
Eleventy Filtresi
Eleventy’de bunu nasıl kullanacağımıza gelirsek; öncelikte bir filtre oluşturmamız gerekiyor.
eleventyConfig.addFilter("formatTarih", (dateObj) => { const options = { timeZone: "Europe/Istanbul", year: "numeric", month: "long", day: "2-digit", hour12: false, hour: "2-digit", minute: "2-digit", }; return new Date(dateObj).toLocaleString("tr-TR", options);});
Yukarıdaki ayarlarda;
timeZone: "Europe/Istanbul"
ile saat dilimimizi,
year: "numeric"
ile yılı 4 basamaklı bir şekilde yazmasını,
month: "long"
ile ayı uzun haliyle (Örn. Nisan) yazmasını,
day: "2-digit"
ile günü iki basamaklı sayı olarak yazmasını,
hour12: false
ile saati 12lik değil 24 saatlik olarak yazmasını,
hour: '2-digit'
ile saati iki basamaklı yazmasını,
minute: '2-digit'
ile de dakikayı iki basamaklı yazmasını sağlıyoruz.
Tabi siz kullanımınıza göre yukarıdaki ayarları tablodakilere göre değiştirebilirsiniz. Ben kendi kullandığım filtreyi yazdım.
Kullanımıysa oldukça basit. Normalde {{ date }}
olarak kullanacağımız tarihi aşağıdaki gibi kullanıyoruz.
{{ date | formatTarih }}
Böylelikle tarihimiz Tue Apr 06 2021 17:13:05 GMT+0000 (Coordinated Universal Time)
olarak değil 06 Nisan 2021 20:13
olarak yazılıyor.