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
| Karakter | Anlamı | Örnek |
|---|---|---|
d | Ayın günü, baştaki sıfırla 2 basamak (01 ile 31 arası) | 14 |
j | Ayın günü, baştaki sıfır olmadan (1 ile 31 arası) | 14 |
D | Kısa gün adı, 3 harf | Sat |
l (küçük L) | Tam gün adı | Saturday |
N | ISO haftanın günü, 1 (Pazartesi) ile 7 (Pazar) arası | 6 |
w | Haftanın günü, 0 (Pazar) ile 6 (Cumartesi) arası | 6 |
S | Gün için İngilizce sonek: st, nd, rd veya th. j sonrasında kullanın | th |
z | Yılın günü, 0'dan başlar | 72 |
Hafta ve ay
| Karakter | Anlamı | Örnek |
|---|---|---|
W | ISO 8601 hafta numarası (haftalar Pazartesi başlar) | 11 |
F | Tam ay adı | March |
M | Kısa ay adı, 3 harf | Mar |
m | Baştaki sıfırla ay numarası (01 ile 12 arası) | 03 |
n | Baştaki sıfır olmadan ay numarası (1 ile 12 arası) | 3 |
t | Aydaki gün sayısı | 31 |
Yıl
| Karakter | Anlamı | Örnek |
|---|---|---|
Y | Tam yıl, en az 4 basamak | 2026 |
y | Yıl, 2 basamak | 26 |
L | Artık yılsa 1, değilse 0 | 0 |
o | ISO 8601 hafta numaralama yılı (W ile kullanın) | 2026 |
X | İşaretli genişletilmiş tam yıl (PHP 8.2+) | +2026 |
x | Genişletilmiş tam yıl, işaret yalnızca gerektiğinde (PHP 8.2+) | 2026 |
Saat
| Karakter | Anlamı | Örnek |
|---|---|---|
H | Saat, 24 saatlik, baştaki sıfırla (00 ile 23 arası) | 09 |
G | Saat, 24 saatlik, baştaki sıfır olmadan (0 ile 23 arası) | 9 |
h | Saat, 12 saatlik, baştaki sıfırla (01 ile 12 arası) | 09 |
g | Saat, 12 saatlik, baştaki sıfır olmadan (1 ile 12 arası) | 9 |
i | Baştaki sıfırla dakika (00 ile 59 arası) | 05 |
s | Baştaki sıfırla saniye (00 ile 59 arası) | 07 |
a | am veya pm | am |
A | AM veya PM | AM |
v | Milisaniye | 123 |
u | Mikrosaniye (tam saniye alan date() içinde her zaman 000000) | 123456 |
B | Swatch İnternet saati (000 ile 999 arası) | 420 |
Saat dilimi
| Karakter | Anlamı | Örnek |
|---|---|---|
e | Saat dilimi tanımlayıcısı | UTC |
T | Saat dilimi kısaltması | UTC |
P | İki noktalı UTC ofseti | +00:00 |
p | P gibi, ama UTC için Z | Z |
O | İki nokta olmadan UTC ofseti | +0000 |
Z | Saniye cinsinden ofset | 0 |
I (büyük i) | Yaz saati uygulamasında 1, değilse 0 | 0 |
Tam tarih ve saat
| Karakter | Anlamı | Örnek |
|---|---|---|
c | ISO 8601 tarih ve saat | 2026-03-14T09:05:07+00:00 |
r | E-posta başlıklarında kullanılan RFC 2822 tarihi | Sat, 14 Mar 2026 09:05:07 +0000 |
U | Unix 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.