Menu

פורמט תאריך ב-PHP: כל תווי הפורמט של date()

פורמט תאריך ב-PHP הוא מחרוזת של אותיות כמו 'Y-m-d H:i:s', שבה Y היא השנה ב-4 ספרות, m החודש, d היום, H השעה, i הדקות ו-s השניות. כאן כל תו פורמט עם דוגמה, ועוד escape לאותיות, ISO 8601, תאריכים ביפנית והמרה מפורמט אחד לאחר.

בדף הזה יש עורכים שאפשר להריץ - לערוך, להריץ ולראות את הפלט מיד.

פורמט תאריך ב-PHP הוא מחרוזת שבה אותיות מייצגות חלקים של התאריך: date('Y-m-d H:i:s') מדפיסה משהו כמו 2026-03-14 09:05:07. Y היא השנה ב-4 ספרות, m החודש, d היום, H השעה (שעון 24 שעות), i הדקות ו-s השניות; כל תו שאינו אות פורמט, כמו -, / או :, מודפס כמו שהוא. אותן מחרוזות פורמט עובדות ב-date() וב-DateTimeImmutable::format().

שנו את $format ולחצו על Run. התאריך קבוע לשבת, 14 במרץ 2026 בשעה 09:05:07, כך שאפשר לראות בדיוק מה כל אות עושה:

פלט:

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

date($format) מעצבת את הרגע הנוכחי ו-date($format, $timestamp) חותמת זמן; $date->format($format) מעצבת אובייקט תאריך. כל השאר על תאריכים, מ-strtotime() ועד אזורי זמן, נמצא בעמוד date() ב-PHP.

תווי פורמט תאריך

כל דוגמה למטה היא התוצאה עבור 2026-03-14 09:05:07.123456 ב-UTC.

יום

תומשמעותדוגמה
dהיום בחודש, 2 ספרות עם אפס מוביל (01 עד 31)14
jהיום בחודש בלי אפס מוביל (1 עד 31)14
Dשם היום הקצר, 3 אותיותSat
l (L קטנה)שם היום המלאSaturday
Nהיום בשבוע לפי ISO, 1 (שני) עד 7 (ראשון)6
wהיום בשבוע, 0 (ראשון) עד 6 (שבת)6
Sסיומת אנגלית ליום: st, nd, rd או th. השתמשו בה אחרי jth
zהיום בשנה, מתחיל ב-072

שבוע וחודש

תומשמעותדוגמה
Wמספר השבוע לפי ISO 8601 (שבועות מתחילים ביום שני)11
Fשם החודש המלאMarch
Mשם החודש הקצר, 3 אותיותMar
mמספר החודש עם אפס מוביל (01 עד 12)03
nמספר החודש בלי אפס מוביל (1 עד 12)3
tמספר הימים בחודש31

שנה

תומשמעותדוגמה
Yהשנה המלאה, לפחות 4 ספרות2026
yהשנה, 2 ספרות26
L1 אם זו שנה מעוברת, אחרת 00
oהשנה של מספור השבועות לפי ISO 8601 (השתמשו בה עם W)2026
Xשנה מלאה מורחבת עם סימן (PHP 8.2 ומעלה)+2026
xשנה מלאה מורחבת, סימן רק כשצריך (PHP 8.2 ומעלה)2026

שעה

תומשמעותדוגמה
Hשעה, שעון 24 שעות, אפס מוביל (00 עד 23)09
Gשעה, שעון 24 שעות, בלי אפס מוביל (0 עד 23)9
hשעה, שעון 12 שעות, אפס מוביל (01 עד 12)09
gשעה, שעון 12 שעות, בלי אפס מוביל (1 עד 12)9
iדקות עם אפס מוביל (00 עד 59)05
sשניות עם אפס מוביל (00 עד 59)07
aam או pmam
AAM או PMAM
vאלפיות שנייה123
uמיליוניות שנייה (תמיד 000000 ב-date(), שמקבלת שניות שלמות)123456
Bזמן אינטרנט של Swatch (000 עד 999)420

אזור זמן

תומשמעותדוגמה
eמזהה אזור הזמןUTC
Tקיצור אזור הזמןUTC
Pההיסט מ-UTC עם נקודתיים+00:00
pכמו P, אבל Z ל-UTCZ
Oההיסט מ-UTC בלי נקודתיים+0000
Zההיסט בשניות0
I (i גדולה)1 בזמן שעון קיץ, אחרת 00

תאריך ושעה מלאים

תומשמעותדוגמה
cתאריך ושעה לפי ISO 86012026-03-14T09:05:07+00:00
rתאריך לפי RFC 2822, משמש בכותרות אימיילSat, 14 Mar 2026 09:05:07 +0000
Uחותמת זמן Unix (שניות מאז 1970-01-01 UTC)1773479107

אותה טבלה, חיה: הבלוק הזה מדפיס כל תו עבור תאריך שתבחרו. שימו את יום ההולדת שלכם, תאריך אחר הצהריים, או תאריך בסוף שנה מעוברת:

הדפסת אותיות ומילים בתוך פורמט

כל אות במחרוזת פורמט נקראת כתו פורמט, ולכן 'Today is l' לא מדפיסה "Today is": T, o, d, a, y, i ו-s הם כולם תווי פורמט. שימו לוכסן הפוך לפני כל אות שאתם רוצים שתודפס כמו שהיא. במחרוזת במירכאות כפולות, \t הוא כבר תו טאב, אז השתמשו בגרשיים בודדים לפורמטים עם לוכסנים הפוכים:

פלט:

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

פורמטי תאריך נפוצים

רוב הקוד צריך רק קומץ פורמטים. הבלוק הזה מדפיס אותם כטבלת HTML, כך שהם מופיעים בלשונית Page:

שמרו והשוו תאריכים כ-Y-m-d או כ-Y-m-d H:i:s: מחרוזות בסדר הזה ממוינות באותה דרך כמו התאריכים, ומחרוזות d/m/Y לא.

ISO 8601, DATE_ATOM ופורמטים סטנדרטיים אחרים

ל-PHP יש קבועים לפורמטים ש-APIs, פידים ועוגיות מצפים להם. DATE_ATOM (וגם DateTimeInterface::ATOM) הוא ISO 8601 ו-RFC 3339, הפורמט ש-APIs של JSON משתמשים בו:

פלט:

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

יש גם קבוע DATE_ISO8601, אבל להיסט שלו אין נקודתיים (+0000), ו-ISO 8601 לא מתיר את זה בצורה הזו; השתמשו ב-DATE_ATOM.

פורמט תאריך יפני (Y年m月d日)

תווים שאינם אותיות פורמט מודפסים כמו שהם, וזה כולל קאנג'י, ולכן 'Y年n月j日' עובד כפי שהוא כתוב. n ו-j משמיטים את האפס המוביל (3月14日), m ו-d שומרים עליו (03月14日). שם היום הוא החלק היחיד ש-date() לא יכולה לתרגם, כי היא מכירה רק שמות באנגלית; מפו במקום זאת את המספר w לרשימה משלכם:

פלט:

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

ללוקליזציה מלאה, כולל שמות חודשים בשפות אחרות והעידן היפני (令和), IntlDateFormatter של הרחבת intl מעצבת עם תבניות locale. היא משתמשת באותיות התבנית של ICU (yyyy, MM, EEEE), לא בתווי PHP שבעמוד הזה:

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

המרת תאריך מפורמט אחד לאחר

כדי להפוך את 14/03/2026 ל-2026-03-14, פענחו את המחרוזת עם הפורמט שבו היא כתובה, בעזרת DateTimeImmutable::createFromFormat(), ואז עצבו אותה שוב. היא משתמשת באותם תווים כמו בטבלה. התחילו את הפורמט ב-!, אחרת שדות שלא נתתם (השעה, כאן) מתמלאים מהרגע הנוכחי:

פלט:

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

בתאריכים שמשתמשים מקלידים, התייחסו לכל אזהרה מ-getLastErrors() כתאריך לא תקין, באותה דרך שבה מתייחסים ל-false.

טעויות נפוצות בפורמטי תאריך

שלושה באגים מופיעים שוב ושוב: m במקום שבו התכוונו ל-i, Y מול y, ונתינה ל-strtotime() לנחש את סדר היום והחודש. strtotime() קוראת לוכסנים בסדר האמריקאי חודש/יום ומקפים או נקודות בסדר יום-חודש, ולכן אותן ספרות נותנות שני תאריכים שונים:

פלט:

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

כשאתם יודעים את הפורמט של הקלט, אמרו אותו עם createFromFormat() במקום לתת ל-strtotime() לנחש.

שאלות נפוצות

מה המשמעות של date('Y-m-d') ב-PHP?

כל אות מוחלפת בחלק מהתאריך: Y היא השנה ב-4 ספרות, m החודש עם אפס מוביל ו-d היום עם אפס מוביל, והמקפים מודפסים כמו שהם. ב-14 במרץ 2026 זה מחזיר 2026-03-14.

איך ממירים תאריך מפורמט אחד לאחר ב-PHP?

פענחו אותו עם הפורמט שבו הוא כתוב, ואז עצבו אותו עם הפורמט שאתם רוצים: DateTimeImmutable::createFromFormat('!d/m/Y', '14/03/2026')->format('Y-m-d') מחזירה 2026-03-14. createFromFormat() מחזירה false כשהמחרוזת לא מתאימה, אז בדקו את זה קודם.

מה ההבדל בין m ל-i בפורמט תאריך של PHP?

m הוא החודש (01 עד 12) ו-i הן הדקות (00 עד 59). כתיבה של 'H:m' במקום 'H:i' היא באג נפוץ: השעה מציגה את מספר החודש במקום שבו היו צריכות להיות הדקות.

איך מעצבים תאריך כ-ISO 8601 ב-PHP?

השתמשו בתו c או בקבוע DATE_ATOM: $date->format(DATE_ATOM) מחזירה 2026-03-14T09:05:07+00:00. הימנעו מ-DATE_ISO8601: להיסט שלו אין נקודתיים (+0000), וזה לא ISO 8601 תקין.

איך מציגים את היום בשבוע ביפנית עם date() של PHP?

date() מדפיסה רק שמות באנגלית, אז מפו את המספר w (0 לראשון עד 6 לשבת) לרשימה משלכם: ['日','月','火','水','木','金','土'][$date->format('w')]. עם הרחבת intl, IntlDateFormatter יכולה לעצב תאריכים שלמים בכל locale.

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל