Menu

PHP Tarih Formatı: date() Biçim Karakterlerinin Tamamı

Bir PHP tarih formatı 'Y-m-d H:i:s' gibi harflerden oluşan bir dizgedir; Y 4 basamaklı yıl, m ay, d gün, H saat, i dakika ve s saniyedir. Burada her biçim karakteri bir örnekle birlikte, ayrıca kaçışlama, ISO 8601, Japonca tarihler ve bir biçimi diğerine dönüştürme var.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Bir PHP tarih formatı, harflerin tarihin parçalarını temsil ettiği bir dizgedir: date('Y-m-d H:i:s') 2026-03-14 09:05:07 gibi bir şey yazdırır. Y 4 basamaklı yıl, m ay, d gün, H saat (24 saatlik), i dakika ve s saniyedir; -, / veya : gibi biçim harfi olmayan her karakter olduğu gibi yazdırılır. Aynı biçim dizgeleri date() ve DateTimeImmutable::format() içinde çalışır.

$format değerini değiştirin ve Run düğmesine basın. Tarih 14 Mart 2026 Cumartesi 09:05:07 olarak sabittir, böylece her harfin tam olarak ne yaptığını görebilirsiniz:

Çıktı:

Sat, 14 Mar 2026 09:05
2026-03-14
14/03/2026
Saturday, March 14th, 2026
9:05 AM

date($format) şu anı, date($format, $timestamp) bir zaman damgasını biçimlendirir; $date->format($format) ise bir tarih nesnesini biçimlendirir. strtotime() fonksiyonundan saat dilimlerine kadar tarihlerle ilgili diğer her şey PHP date() sayfasında.

Tarih biçim karakterleri

Aşağıdaki her örnek UTC'de 2026-03-14 09:05:07.123456 için sonuçtur.

Gün

KarakterAnlamıÖrnek
dAyın günü, baştaki sıfırla 2 basamak (01 ile 31 arası)14
jAyın günü, baştaki sıfır olmadan (1 ile 31 arası)14
DKısa gün adı, 3 harfSat
l (küçük L)Tam gün adıSaturday
NISO haftanın günü, 1 (Pazartesi) ile 7 (Pazar) arası6
wHaftanın günü, 0 (Pazar) ile 6 (Cumartesi) arası6
SGün için İngilizce sonek: st, nd, rd veya th. j sonrasında kullanınth
zYılın günü, 0'dan başlar72

Hafta ve ay

KarakterAnlamıÖrnek
WISO 8601 hafta numarası (haftalar Pazartesi başlar)11
FTam ay adıMarch
MKısa ay adı, 3 harfMar
mBaştaki sıfırla ay numarası (01 ile 12 arası)03
nBaştaki sıfır olmadan ay numarası (1 ile 12 arası)3
tAydaki gün sayısı31

Yıl

KarakterAnlamıÖrnek
YTam yıl, en az 4 basamak2026
yYıl, 2 basamak26
LArtık yılsa 1, değilse 00
oISO 8601 hafta numaralama yılı (W ile kullanın)2026
Xİşaretli genişletilmiş tam yıl (PHP 8.2+)+2026
xGenişletilmiş tam yıl, işaret yalnızca gerektiğinde (PHP 8.2+)2026

Saat

KarakterAnlamıÖrnek
HSaat, 24 saatlik, baştaki sıfırla (00 ile 23 arası)09
GSaat, 24 saatlik, baştaki sıfır olmadan (0 ile 23 arası)9
hSaat, 12 saatlik, baştaki sıfırla (01 ile 12 arası)09
gSaat, 12 saatlik, baştaki sıfır olmadan (1 ile 12 arası)9
iBaştaki sıfırla dakika (00 ile 59 arası)05
sBaştaki sıfırla saniye (00 ile 59 arası)07
aam veya pmam
AAM veya PMAM
vMilisaniye123
uMikrosaniye (tam saniye alan date() içinde her zaman 000000)123456
BSwatch İnternet saati (000 ile 999 arası)420

Saat dilimi

KarakterAnlamıÖrnek
eSaat dilimi tanımlayıcısıUTC
TSaat dilimi kısaltmasıUTC
Pİki noktalı UTC ofseti+00:00
pP gibi, ama UTC için ZZ
Oİki nokta olmadan UTC ofseti+0000
ZSaniye cinsinden ofset0
I (büyük i)Yaz saati uygulamasında 1, değilse 00

Tam tarih ve saat

KarakterAnlamıÖrnek
cISO 8601 tarih ve saat2026-03-14T09:05:07+00:00
rE-posta başlıklarında kullanılan RFC 2822 tarihiSat, 14 Mar 2026 09:05:07 +0000
UUnix zaman damgası (1970-01-01 UTC'den beri saniye)1773479107

Aynı tablo, canlı olarak: bu blok seçtiğiniz bir tarih için her karakteri yazdırır. Doğum gününüzü, öğleden sonraki bir tarihi ya da artık bir yılın sonundaki bir tarihi girin:

Bir biçimin içinde harf ve kelime yazdırma

Bir biçim dizgesindeki her harf bir biçim karakteri olarak okunur, bu yüzden 'Today is l' "Today is" yazdırmaz: T, o, d, a, y, i ve s hepsi biçim karakteridir. Olduğu gibi yazdırılmasını istediğiniz her harfin önüne bir ters eğik çizgi koyun. Çift tırnaklı bir dizgede \t zaten bir sekme karakteridir, bu yüzden ters eğik çizgili biçimler için tek tırnak kullanın:

Çıktı:

UTC202614am26 0507 Saturday
Today is Saturday
Saturday the 14th of March
2026-03-14T09:05:07
Saturday 	09UTC 14th

Yaygın tarih biçimleri

Kodların çoğu yalnızca birkaç biçime ihtiyaç duyar. Bu blok onları bir HTML tablo olarak yazdırır, bu yüzden Page sekmesinde görünür:

Tarihleri Y-m-d veya Y-m-d H:i:s olarak saklayın ve karşılaştırın: bu sıradaki dizgeler tarihlerle aynı şekilde sıralanır, d/m/Y dizgeleri ise sıralanmaz.

ISO 8601, DATE_ATOM ve diğer standart biçimler

PHP'de API'lerin, beslemelerin ve çerezlerin beklediği biçimler için sabitler vardır. DATE_ATOM (ayrıca DateTimeInterface::ATOM) ISO 8601 ve RFC 3339 biçimidir; JSON API'leri bu biçimi kullanır:

Çıktı:

2026-03-14T09:05:07+00:00
2026-03-14T09:05:07+00:00
2026-03-14T09:05:07.000+00:00
Sat, 14 Mar 2026 09:05:07 +0000
Sat, 14 Mar 2026 09:05:07 +0000
Saturday, 14-Mar-2026 09:05:07 UTC
Y-m-d\TH:i:sP

Bir DATE_ISO8601 sabiti de vardır, ama ofsetinde iki nokta yoktur (+0000) ve ISO 8601 bu biçime o şekilde izin vermez; DATE_ATOM kullanın.

Japonca tarih biçimi (Y年m月d日)

Biçim harfi olmayan karakterler olduğu gibi yazdırılır, kanji de buna dahildir, bu yüzden 'Y年n月j日' yazıldığı gibi çalışır. n ve j baştaki sıfırı atar (3月14日), m ve d ise korur (03月14日). Gün adı date() fonksiyonunun çeviremediği tek kısımdır, çünkü yalnızca İngilizce adları bilir; bunun yerine w sayısını kendi listenize eşleyin. Aynı yöntem Türkçe gün adları için de çalışır:

Çıktı:

2026年3月14日
2026年03月14日 09時05分
2026年3月14日(土)
2026/03/14

Diğer dillerdeki ay adları ve Japon dönemi (令和) dahil tam yerelleştirme için intl eklentisinin IntlDateFormatter sınıfı yerel ayar kalıplarıyla biçimlendirir. Bu sayfadaki PHP karakterlerini değil, ICU kalıp harflerini (yyyy, MM, EEEE) kullanır:

<?php
$formatter = new IntlDateFormatter('ja_JP', IntlDateFormatter::FULL, IntlDateFormatter::NONE, 'Asia/Tokyo');
echo $formatter->format(new DateTimeImmutable('2026-03-14')); // 2026年3月14日土曜日

$era = new IntlDateFormatter('ja_JP@calendar=japanese', IntlDateFormatter::LONG, IntlDateFormatter::NONE, 'Asia/Tokyo', IntlDateFormatter::TRADITIONAL);
echo $era->format(new DateTimeImmutable('2026-03-14'));       // 令和8年3月14日

Bir tarihi bir biçimden diğerine dönüştürme

14/03/2026 değerini 2026-03-14 yapmak için dizgeyi yazıldığı biçimle DateTimeImmutable::createFromFormat() kullanarak ayrıştırın, sonra yeniden biçimlendirin. Tablodaki aynı karakterleri kullanır. Biçimi ! ile başlatın, yoksa vermediğiniz alanlar (burada saat) şu andan doldurulur:

Çıktı:

2026-03-14 00:00:00
March 14, 2026
bool(false)
2026-03-03
Array
(
    [10] => The parsed date was invalid
)

Kullanıcıların yazdığı tarihlerde getLastErrors() fonksiyonundan gelen her uyarıyı false gibi geçersiz bir tarih olarak ele alın.

Tarih biçimleriyle sık yapılan hatalar

Üç hata tekrar tekrar ortaya çıkar: i kastedilirken m, Y ile y farkı ve gün ile ayın sırasını strtotime() fonksiyonunun tahmin etmesine bırakmak. strtotime() eğik çizgileri Amerikan ay/gün sırası, tireleri veya noktaları ise gün-ay sırası olarak okur, bu yüzden aynı rakamlar iki farklı tarih verir:

Çıktı:

09:03:07
09:05:07
14/03/26
2026-03-04
2026-04-03
bool(false)

Girdinin biçimini bildiğinizde strtotime() fonksiyonunun tahmin etmesine izin vermek yerine bunu createFromFormat() ile söyleyin.

Sıkça Sorulan Sorular

PHP'de date('Y-m-d') ne anlama gelir?

Her harf tarihin bir parçasıyla değiştirilir: Y 4 basamaklı yıl, m baştaki sıfırla ay, d baştaki sıfırla gündür ve tireler olduğu gibi yazdırılır. 14 Mart 2026'da 2026-03-14 döndürür.

PHP'de bir tarihi bir biçimden diğerine nasıl dönüştürürüm?

Onu içinde bulunduğu biçimle ayrıştırın, sonra istediğiniz biçimle biçimlendirin: DateTimeImmutable::createFromFormat('!d/m/Y', '14/03/2026')->format('Y-m-d') 2026-03-14 döndürür. Dizge eşleşmezse createFromFormat() false döndürür, bu yüzden önce bunu kontrol edin.

PHP tarih formatında m ile i arasındaki fark nedir?

m ay (01 ile 12 arası), i ise dakikadır (00 ile 59 arası). 'H:i' yerine 'H:m' yazmak yaygın bir hatadır: saat, dakikaların olması gereken yerde ay numarasını gösterir.

PHP'de bir tarihi ISO 8601 olarak nasıl biçimlendiririm?

c karakterini veya DATE_ATOM sabitini kullanın: $date->format(DATE_ATOM) 2026-03-14T09:05:07+00:00 döndürür. DATE_ISO8601 kullanmaktan kaçının: ofsetinde iki nokta yoktur (+0000), bu da geçerli ISO 8601 değildir.

PHP date() ile haftanın gününü Japonca nasıl gösteririm?

date() yalnızca İngilizce adlar yazdırır, bu yüzden w sayısını (Pazar için 0'dan Cumartesi için 6'ya) kendi listenize eşleyin: ['日','月','火','水','木','金','土'][$date->format('w')]. intl eklentisiyle IntlDateFormatter tarihlerin tamamını herhangi bir yerel ayarda biçimlendirebilir.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

BAŞLA