Some powerful formatting features are available for formatting dates, possibly combined with time of day information in any combinations. The formatting template applies to following functions:
Formatting Template | Description | Example | Note |
---|---|---|---|
D | Day, 1 or 2 digits | 1 .. 31 | See 1 |
DD | Day, 2 digits | 01 ... 31 | See 1 |
DDD / Ddd / ddd | Day, 1 or 2 digits, followd by ordinal | 1ST ... 31ST / 1St ... 31St / 1st ... 31st | See 2 |
DDDD / Dddd / dddd | Day, 2 digits, followd by ordinal | 01ST ... 31ST / 01St ... 31St / 01st ... 31st | See 2,3 |
M | Month, 1 or 2 digits | 1 .. 12 | See 1 |
MM | Month, 2 digits | 01 ... 12 | See 1 |
MMM / Mmm / mmm | Month name, abbreviated | JAN / Jan / jan | See 2,3 |
MMM / Mmm / mmm | Month name | JANUARY / January / january | See 2,3 |
Q | Quarter, 1 digit | 1 ... 4 | See 1 |
QQ / qq | Quarter, 1 digit after Q | Q1 ... Q4 / q1 ... q4 | See 4 |
QQQ / qqq | Quarter, 1 digit before Q | 1Q ... 4Q / 1q ... 4q | See 4 |
T | Weekday number | 1 (Monday) .. 7 (Sunday) | See 1 |
TT / Tt / tt | Weekday name, abbreviated (typ. 2 chars) | MO ... SU / Mo ... Su / mo ... su | See 2,3 |
TTT / Ttt / ttt | Weekday name, abbreviated (typ. 3 chars) | MON...SUN / Mon...Sun / mon...sun | See 2,3 |
TTTT / Tttt / tttt | Weekday name | MONDAY / Monday / monday | See 2,3 |
W | ISO week number, 1 or 2 digits | 1 .. 53 | See 1,5 |
WW | ISO week number, 2 digits | 01 .. 53 | See 1,5 |
WWW / www | ISO week number, 1 letter + 1 or 2 digits | W1 .. W53 / w1 .. w53 | See 3,4,5 |
WWWW / wwww | ISO week number, 1 letter + 2 digits | W01 .. W53 / w01 .. w53 | See 3,4,5 |
WWWWW / Wwwww / wwwww | ISO week number, abbreviation + 1 or 2 digits | WK 1 / Wk 1 / wk 1 | See 2,3,5 |
WWWWWW / Wwwwww / wwwwww | ISO week number, abbreviation + 2 digits | WK 01 / Wk 01 / wk 01 | See 2,3,5 |
WWWWWWW / Wwwwwww / wwwwwww | ISO week number, week name + 1 or 2 digits | WEEK 1 / Week 1 / week 1 | See 2,3,5 |
WWWWWWWW / Wwwwwwww / wwwwwwww | ISO week number, week name + 2 digits | WEEK 01 / Week 01 / week 01 | See 2,3,5 |
X | Adjusted week number, 1 or 2 digits | 0 .. 53 | See 1,6 |
XX | Adjusted week number, 2 digits | 00 .. 53 | See 1,6 |
XXX / xxx | Adjusted week number, 1 letter + 1 or 2 digits | W0 .. W53 / w1 .. w53 | See 3,4,6 |
XXXX / xxxx | Adjusted week number, 1 letter + 2 digits | W01 .. W53 / w01 .. w53 | See 3,4,6 |
XXXXX / Xxxxx / xxxxx | Adjusted week number, abbreviation + 1 or 2 digits | WK 00 / Wk 00 / wk 00 | See 2,3,6 |
XXXXXX / Xxxxxx / xxxxxx | Adjusted week number, abbreviation + 2 digits | WK 00 / Wk 00 / wk 00 | See 2,3,6 |
XXXXXXX / Xxxxxxx / xxxxxx | Adjusted week number, week name + 1 or 2 digits | WEEK 0 / Week 0 / week 0 | See 2,3,6 |
XXXXXXXX / Xxxxxxxx / xxxxxxx | Adjusted week number, week name + 2 digits | WEEK 00 / Week 00 / week 00 | See 2,3,6 |
Y and YY | Year, 2 digits | 20 | See 1 |
YYY and YYYY | Year, 4 digits | 2020 | See 1 |
Z and ZZ | Adjusted Year, 2 digits, use with ISO week number | E.g. str( date("2019-12-31"), "YY-WW" -> 20-01 | See 1,7 |
ZZZ and ZZZZ | Adjusted Year, 4 digits, use with ISO week number | E.g. str( date("2019-12-31"), "YYYY-WW" -> 2020-01 | See 1,7 |
H | Hour, 1 or 2 digits, 0 - 23 range | 0 ... 23 | |
h | Hour, 1 or 2 digits, 1 - 12 range | 1 ... 12 | |
HH | Hour, 2 digits, 0 - 23 range | 00 ... 23 | |
hh | Hour, 2 digits, 1 - 12 range | 01 ... 12 | See 8 |
I | Minute, 1 or 2 digits | 0 ... 59 | See 1 |
II | Minute, 2 digits | 00 ... 59 | See 1 |
S | Second, 1 or 2 digits | 0 ... 59 | See 1 |
SS | Second, 2 digits | 00 ... 59 | See 1 |
A / a | a.m. / p.m. info, 1 letter | A, P / a, p | |
AA / Aa / aa | a.m. / p.m. info, 2 letters | AM, PM / Am, Pm / am, pm | |
AAA / Aaa / aaa | a.m. / p.m. info, 4 letters | A.M., P.M. / A.m., P.m. / a.m., p.m. | See 2 |
' ... ' | Contents inside quotation marks are treated as given text, including spaces | "o'clock" | See 9 |
" ... " | See above | 'time: ' | See 10 |
All other characters | Treated as given text |
1 Template letter is case insensitive. E.g. 'DD', 'Dd', 'dD' and 'dd' make no difference.
2 Case of 1st letter determines 1st letter in the output, case of 2nd letter determines case of all remaining letters. The cases of following letters (if 3 or more consecutive letters specified) are ignored.
3 Uses the language as confgured by locale parameter or setting.
4 Case of 1st letter determines 1st letter in the output. The cases of following letters (if 2 or more consecutive letters specified) are ignored.
5 ISO Week numbers: In some years, the first day lies in week 53 of the previous year. In some other years, the last day lies in week 1 of the following year.
6 Adjusted week numbers: In some years, the first day lies in week 0. Last day in all years are either week 52 or 53, but not 0.
7 Referring to 5, These are the matching year numbers adjusted to the ISO week numbers.
8 Case of 1st letter determines the output format. The cases in the following consecutive letters are ignored.
9 Applicable outside double quotation marks, otherwise symbols are treated as given text
10 Applicable outside single quotation marks, otherwise symbols are treated as given text
Specify a supported locale name, a country name or a language name. See locales for an overview of supported locales. Choices are not case sensitive.
Examples: en_US, DE_at, France, German, local, none
Following examples show use of date to string conversion without formatting template
date 1[] = date("2020-07-04"); // Some national holidays
date 2[] = date("2020-10-03");
date 3[] = date("2020-07-14");
date 4[] = date("2020-08-01 22:30:00");
date 5[] = date("22:30:00");
echo( str( date 1[], " *", EN_us ));
echo( str( date 2[], "*", EN_de ));
echo( str( date 3[], "*", France ));
echo( str( date 4[], "*", de_CH ));
echo( str( date 3[], "*", none ));
echo( str( date 2[], "*", local ));
echo( str( date 1[] )); // assumes '*' and none
echo( str( date 5[], "*", EN_us )); // Always 0-23h if not specified otherwise
*
03/10/2020
14/07/2020
01.08.2020 22:30:00
2020-07-14
03.10.2020
2020-07-04
22:30:00
Following examples show use of date to string conversion with formatting template
date 1[] = date("2020-07-04"); // Some national holidays
date 2[] = date("2020-08-01 22:30:00");
echo( str( date 1[], "Tttt DD.Mmmm.YY", EN_us ));
echo( str( date 2[], "Ttt DD.mm.YYYY ' Zeit: ' HH:ii:ss", DE_de ));
echo( str( date 2[], "Ttt DD.mm.YYYY ' Zeit: ' HH:ii:ss", DE_de ));
echo( str( date 2[], "Ttt MM/DD/YY ' Time: ' hh:ii:ss aaa", en_US ));
echo( str( date 1[], "Tttt DD.Mmmm.YY", Hindi ));
echo( new line, "Show difference between ISO and adjusted week and year numbers: ");
echo( str( date( "2019-12-31"), "'Week: 'ZZZZ-WW 'and' YYYY-XX") ); // Different
echo( str( date( "2020-06-30"), "'Week: 'ZZZZ-WW 'and' YYYY-XX") ); // Same
echo( str( date( "2021-01-01"), "'Week: 'ZZZZ-WW 'and' YYYY-XX") ); // Different
Saturday 04.July.20
Sam 01.08.2020 Zeit: 22:30:00
Sam 01.08.2020 Zeit: 22:30:00
Sat 08/01/20 Time: 10:30:00 p.m.
शनिवार 04.जुलाई.20
Show difference between ISO and adjusted week and year numbers:
Week: 2020-01 and 2019-53
Week: 2020-27 and 2020-27
Week: 2020-53 and 2021-00