Menu

Format Tanggal PHP: Semua Karakter Format date()

Format tanggal PHP adalah string berisi huruf seperti 'Y-m-d H:i:s', dengan Y untuk tahun 4 digit, m untuk bulan, d untuk hari, H untuk jam, i untuk menit, dan s untuk detik. Di sini ada setiap karakter format beserta contohnya, ditambah cara escape, ISO 8601, tanggal Jepang, dan mengubah satu format ke format lain.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Format tanggal PHP adalah string yang hurufnya mewakili bagian-bagian tanggal: date('Y-m-d H:i:s') mencetak sesuatu seperti 2026-03-14 09:05:07. Y adalah tahun 4 digit, m bulan, d hari, H jam (format 24 jam), i menit, dan s detik; karakter apa pun yang bukan huruf format, seperti -, /, atau :, dicetak apa adanya. String format yang sama bekerja di date() maupun di DateTimeImmutable::format().

Ubah $format lalu tekan Jalankan. Tanggalnya dikunci pada Sabtu, 14 Maret 2026 pukul 09:05:07, jadi kamu bisa melihat persis apa yang dilakukan setiap huruf:

Output:

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

date($format) memformat saat ini dan date($format, $timestamp) memformat sebuah timestamp; $date->format($format) memformat objek tanggal. Semua hal lain tentang tanggal, dari strtotime() sampai zona waktu, ada di halaman PHP date().

Karakter format tanggal

Setiap contoh di bawah ini adalah hasil untuk 2026-03-14 09:05:07.123456 UTC.

Hari

KarakterArtiContoh
dTanggal dalam bulan, 2 digit dengan nol di depan (01 sampai 31)14
jTanggal dalam bulan tanpa nol di depan (1 sampai 31)14
DNama hari singkat, 3 hurufSat
l (huruf L kecil)Nama hari lengkapSaturday
NHari dalam minggu versi ISO, 1 (Senin) sampai 7 (Minggu)6
wHari dalam minggu, 0 (Minggu) sampai 6 (Sabtu)6
SAkhiran bahasa Inggris untuk tanggal: st, nd, rd, atau th. Pakai setelah jth
zHari ke berapa dalam tahun, mulai dari 072

Minggu dan bulan

KarakterArtiContoh
WNomor minggu ISO 8601 (minggu dimulai hari Senin)11
FNama bulan lengkapMarch
MNama bulan singkat, 3 hurufMar
mNomor bulan dengan nol di depan (01 sampai 12)03
nNomor bulan tanpa nol di depan (1 sampai 12)3
tJumlah hari dalam bulan itu31

Tahun

KarakterArtiContoh
YTahun lengkap, minimal 4 digit2026
yTahun, 2 digit26
L1 kalau tahun kabisat, selain itu 00
oTahun penomoran minggu ISO 8601 (pakai bersama W)2026
XTahun lengkap yang diperluas, dengan tanda (PHP 8.2+)+2026
xTahun lengkap yang diperluas, tanda hanya kalau perlu (PHP 8.2+)2026

Waktu

KarakterArtiContoh
HJam, format 24 jam, dengan nol di depan (00 sampai 23)09
GJam, format 24 jam, tanpa nol di depan (0 sampai 23)9
hJam, format 12 jam, dengan nol di depan (01 sampai 12)09
gJam, format 12 jam, tanpa nol di depan (1 sampai 12)9
iMenit dengan nol di depan (00 sampai 59)05
sDetik dengan nol di depan (00 sampai 59)07
aam atau pmam
AAM atau PMAM
vMilidetik123
uMikrodetik (selalu 000000 di date(), yang hanya menerima detik bulat)123456
BSwatch Internet time (000 sampai 999)420

Zona waktu

KarakterArtiContoh
eIdentifier zona waktuUTC
TSingkatan zona waktuUTC
PSelisih dari UTC dengan titik dua+00:00
pSeperti P, tetapi Z untuk UTCZ
OSelisih dari UTC tanpa titik dua+0000
ZSelisih dalam detik0
I (huruf i kapital)1 selama daylight saving time, selain itu 00

Tanggal dan waktu lengkap

KarakterArtiContoh
cTanggal dan waktu ISO 86012026-03-14T09:05:07+00:00
rTanggal RFC 2822, dipakai di header emailSat, 14 Mar 2026 09:05:07 +0000
UUnix timestamp (detik sejak 1970-01-01 UTC)1773479107

Tabel yang sama, dalam versi langsung: blok ini mencetak setiap karakter untuk tanggal yang kamu pilih. Masukkan tanggal ulang tahunmu, tanggal di sore hari, atau tanggal di akhir tahun kabisat:

Mencetak huruf dan kata di dalam format

Setiap huruf dalam string format dibaca sebagai karakter format, jadi 'Today is l' tidak mencetak "Today is": T, o, d, a, y, i, dan s semuanya karakter format. Taruh backslash sebelum setiap huruf yang ingin dicetak apa adanya. Dalam string berkutip ganda, \t sudah berarti karakter tab, jadi pakai kutip tunggal untuk format yang mengandung backslash:

Output:

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

Format tanggal yang umum

Kebanyakan kode hanya butuh beberapa format. Blok ini mencetaknya sebagai tabel HTML, jadi hasilnya tampil di tab Halaman:

Simpan dan bandingkan tanggal dalam format Y-m-d atau Y-m-d H:i:s: string dengan urutan itu terurut sama seperti tanggalnya, sedangkan string d/m/Y tidak.

ISO 8601, DATE_ATOM, dan format standar lainnya

PHP punya konstanta untuk format yang diharapkan API, feed, dan cookie. DATE_ATOM (juga DateTimeInterface::ATOM) adalah ISO 8601 dan RFC 3339, format yang dipakai API JSON:

Output:

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

Ada juga konstanta DATE_ISO8601, tetapi offset-nya tidak memakai titik dua (+0000), yang tidak diizinkan ISO 8601 dalam bentuk itu; pakai DATE_ATOM.

Format tanggal Jepang (Y年m月d日)

Karakter yang bukan huruf format dicetak apa adanya, termasuk kanji, jadi 'Y年n月j日' bekerja seperti yang tertulis. n dan j menghilangkan nol di depan (3月14日), sedangkan m dan d mempertahankannya (03月14日). Nama hari adalah satu-satunya bagian yang tidak bisa diterjemahkan date(), karena fungsi itu hanya tahu nama dalam bahasa Inggris; petakan angka w ke list buatanmu sendiri:

Output:

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

Untuk lokalisasi penuh, termasuk nama bulan dalam bahasa lain dan era Jepang (令和), IntlDateFormatter dari ekstensi intl memformat dengan pola locale. Class ini memakai huruf pola ICU (yyyy, MM, EEEE), bukan karakter PHP di halaman ini:

<?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日

Mengubah tanggal dari satu format ke format lain

Untuk mengubah 14/03/2026 menjadi 2026-03-14, parse string-nya dengan format yang dipakainya menggunakan DateTimeImmutable::createFromFormat(), lalu format ulang. Fungsi ini memakai karakter yang sama dengan tabel di atas. Awali formatnya dengan !, karena kalau tidak, field yang tidak kamu berikan (di sini, jamnya) akan diisi dari waktu saat ini:

Output:

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

Untuk tanggal yang diketik pengguna, anggap setiap warning dari getLastErrors() sebagai tanggal yang tidak valid, sama seperti saat kamu mendapat false.

Kesalahan umum dengan format tanggal

Tiga bug ini muncul berulang kali: m padahal yang dimaksud i, Y versus y, dan membiarkan strtotime() menebak urutan hari dan bulan. strtotime() membaca garis miring sebagai urutan bulan/hari ala Amerika, dan tanda strip atau titik sebagai urutan hari-bulan, jadi angka yang sama menghasilkan dua tanggal berbeda:

Output:

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

Kalau kamu tahu format input-nya, sebutkan dengan createFromFormat() alih-alih membiarkan strtotime() menebak.

Pertanyaan yang sering diajukan

Apa arti date('Y-m-d') di PHP?

Setiap huruf diganti dengan bagian dari tanggal: Y adalah tahun 4 digit, m bulan dengan nol di depan, dan d hari dengan nol di depan, sedangkan tanda strip dicetak apa adanya. Pada 14 Maret 2026, hasilnya 2026-03-14.

Bagaimana cara mengubah format tanggal di PHP?

Parse tanggalnya dengan format aslinya, lalu format dengan format yang kamu mau: DateTimeImmutable::createFromFormat('!d/m/Y', '14/03/2026')->format('Y-m-d') mengembalikan 2026-03-14. createFromFormat() mengembalikan false kalau string-nya tidak cocok, jadi periksa itu dulu.

Apa bedanya m dan i dalam format tanggal PHP?

m adalah bulan (01 sampai 12) dan i adalah menit (00 sampai 59). Menulis 'H:m' alih-alih 'H:i' adalah bug yang umum: jamnya menampilkan nomor bulan di tempat yang seharusnya menit.

Bagaimana cara memformat tanggal sebagai ISO 8601 di PHP?

Pakai karakter c atau konstanta DATE_ATOM: $date->format(DATE_ATOM) mengembalikan 2026-03-14T09:05:07+00:00. Hindari DATE_ISO8601: offset-nya tidak memakai titik dua (+0000), yang bukan ISO 8601 yang valid.

Bagaimana cara menampilkan nama hari dalam bahasa Jepang dengan date() di PHP?

date() hanya mencetak nama dalam bahasa Inggris, jadi petakan angka w (0 untuk Minggu sampai 6 untuk Sabtu) ke list buatanmu sendiri: ['日','月','火','水','木','金','土'][$date->format('w')]. Dengan ekstensi intl, IntlDateFormatter bisa memformat tanggal lengkap dalam locale apa pun.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai