פורמט תאריך ב-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. השתמשו בה אחרי j | th |
z | היום בשנה, מתחיל ב-0 | 72 |
שבוע וחודש
| תו | משמעות | דוגמה |
|---|---|---|
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 |
L | 1 אם זו שנה מעוברת, אחרת 0 | 0 |
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 |
a | am או pm | am |
A | AM או PM | AM |
v | אלפיות שנייה | 123 |
u | מיליוניות שנייה (תמיד 000000 ב-date(), שמקבלת שניות שלמות) | 123456 |
B | זמן אינטרנט של Swatch (000 עד 999) | 420 |
אזור זמן
| תו | משמעות | דוגמה |
|---|---|---|
e | מזהה אזור הזמן | UTC |
T | קיצור אזור הזמן | UTC |
P | ההיסט מ-UTC עם נקודתיים | +00:00 |
p | כמו P, אבל Z ל-UTC | Z |
O | ההיסט מ-UTC בלי נקודתיים | +0000 |
Z | ההיסט בשניות | 0 |
I (i גדולה) | 1 בזמן שעון קיץ, אחרת 0 | 0 |
תאריך ושעה מלאים
| תו | משמעות | דוגמה |
|---|---|---|
c | תאריך ושעה לפי ISO 8601 | 2026-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.