If you want to get the week of year + year of said week, you need to use `format('o-W'), otherwise you can stumble into a non-obvious gotcha (unless you RTFM and memorised it, that is).
Using `Y` instead of `o` can result in incorrect year values in the case of the first or last week of the year (depending on if January 4th falls into said week or not), such as the first week of 2025 between 2024-12-30 and 2025-01-05 - `(new DateTime('2024-12-30'))->format('o-W')` will return the correct value of `2025-01` (as per ISO-8601 definition of week of year), while `format('Y-W')` will return `2024-01`.
Because of this, I would personally recommend avoiding using week of year anywhere unless absolutely necessary, as it is easy to make this mistake and never realise it.DateTimeInterface::format
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
DateTimeInterface::format
Референца за `datetime.format.php` со подобрена типографија и навигација.
DateTimeInterface::format
DateTimeImmutable::format
DateTime::format
date_format
(PHP 5 >= 5.2.0, PHP 7, PHP 8)
DateTimeInterface::format -- DateTimeImmutable::format -- DateTime::format -- date_format — Враќа датум форматиран според дадениот формат
= NULL
Напиши целосна ознака на елемент
Процедурален стил
Враќа датум форматиран според дадениот формат.
Параметри
objectобјектот како свој прв аргумент. DateTime Само процедурален стил: А date_create()
format-
Форматот на прикажаниот датум string. Погледнете ги опциите за форматирање подолу. Исто така постојат неколку претходно дефинирани константи за датум кои можат да се користат наместо тоа, така на пример
DATE_RSSја содржи низата за форматирање'D, d M Y H:i:s'.Следниве знаци се препознаваат во formatнизата за параметриformatcharacter= NULL Пример вратени вредности Ден --- --- dДен од месецот, 2 цифри со водечки нули 01to31DТекстуална репрезентација на ден, три букви MonthroughSunjДен од месецот без водечки нули 1to31l(мали букви 'L')Целосна текстуална репрезентација на денот во неделата SundaythroughSaturdayNISO 8601 нумеричка репрезентација на денот во неделата 1(за Понеделник) до7(за Недела)SАнглиски ординален суфикс за денот од месецот, 2 знаци st,nd,rdorth. Работи добро соjwНумеричка репрезентација на денот во неделата 0Нумеричка претстава на денот во неделата6(за Недела) доzДенот од годината (почнувајќи од 0) 0through365(за Сабота) --- --- WISO 8601 број на неделата во годината, неделите започнуваат во понеделник Пример: 42(42-та недела во годината)(за 46-тата недела од годината што започнува со Понеделник) --- --- FЦелосна текстуална репрезентација на месец, како јануари или март JanuarythroughDecembermНумеричка репрезентација на месец, со водечки нули 01through12MКраток текстуален приказ на месец, три букви JanthroughDecnНумерички приказ на месец, без водечки нули 1through12tБрој на денови во дадениот месец 28through31(за Декември) --- --- LДали е престапна година 1ако е престапна година,0otherwise.oISO 8601 година според бројот на неделата. Ова ја има истата вредност како Y, освен што ако бројот на ISO неделата (W) припаѓа на претходната или следната година, наместо тоа се користи таа година.Примери: 1999or2003XПроширен целосен нумерички приказ на година, најмалку 4 цифри, со -за години п.н.е., и+за години н.е.Примери: -0055,+0787,+1999,+10191xПроширен целосен нумерички приказ ако е потребно, или стандарден целосен нумерички приказ ако е можно (како Y). Најмалку четири цифри. Годините п.н.е. се претходат со-. Years beyond (and including)10000се претходат со+.Примери: -0055,0787,1999,+10191YЦелосен нумерички приказ на година, најмалку 4 цифри, со -за години п.н.е.Примери: -0055,0787,1999,2003,10191yДвоцифрен приказ на година Примери: 99or03Време --- --- aМали букви предпладне и попладне amorpmAГолеми букви предпладне и попладне AMorPMBSwatch Интернет време 000through999g12-часовен формат на час без водечки нули 1through12G24-часовен формат на час без водечки нули 0through23h12-часовен формат на час со водечки нули 01through12H24-часовен формат на час со водечки нули 00through23iМинути со водечки нули 00to59sСекунди со водечки нули 00through59uМикросекунди. Имајте предвид дека date() Формат прифатен од 000000бидејќи зема int како микросекунди бидејќи зема - Враќа датум форматиран според дадениот формат параметар, додека DateTimeInterface поддржува микросекунди ако објект од типотПример: 654321vМилисекунди. Истото правило важи како за u.Пример: 654Временска зона --- --- eИдентификатор на временска зона Примери: UTC,GMT,Atlantic/AzoresI(големо i)Дали датумот е во летна сезона или не 1ако е летна сезона,0otherwise.OРазлика до Гриничко време (GMT) без двоеточие помеѓу часови и минути Пример: +0200PРазлика до Гриничко време (GMT) со двоеточие помеѓу часови и минути Пример: +02:00pИзлезниот интерфејс за IPv6 мултикаст пакети. P, но враќаZнаместо+00:00(достапно од PHP 8.0.0)Примери: Zor+02:00TСкратено име на временската зона, ако е познато; инаку GMT поместување. Примери: EST,MDT,+05ZПоместување на временската зона во секунди. Поместувањето за временските зони западно од UTC е секогаш негативно, а за оние источно од UTC е секогаш позитивно. -43200through50400Целосен датум/време --- --- cISO 8601 датум. Компатибилен само со не-проширениот формат (до година 9999). Поновите датуми ќе резултираат со невалиден стринг. За понови датуми и проширен формат, видете xandX.2004-02-12T15:19:21+00:00 r» RFC 2822/» RFC 5322 форматиран датум Пример: Thu, 21 Dec 2000 16:01:07 +0200UСекунди од Unix епохата (1 јануари 1970 00:00:00 GMT) Види исто така time() Непрепознаените знаци во стринг за формат ќе бидат испечатени како што се. На
Zформатот секогаш ќе враќа0кога се користи gmdate().Забелешка:
Бидејќи оваа функција прифаќа само int временски ознаки, на
uзнакот за формат е корисен само кога се користи date_format() функцијата со временски ознаки базирани на корисник креирани со date_create().
Вратени вредности
Враќа форматиран стринг со датум при успех.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.2.0 |
Знаците за формат X and x
се додадени.
|
| 8.0.0 |
Знакот за формат p е додадена.
|
Примери
Пример #1 - Враќа датум форматиран според дадениот формат example
Напиши целосна ознака на елемент
<?php
$date = new DateTimeImmutable('2000-01-01');
echo $date->format('Y-m-d H:i:s');
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
2000-01-01 00:00:00
Процедурален стил
<?php
$date = date_create('2000-01-01');
echo date_format($date, 'Y-m-d H:i:s');
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
2000-01-01 00:00:00
Пример #2 Повеќе примери
<?php
// set the default timezone to use.
date_default_timezone_set('UTC');
// now
$date = new DateTimeImmutable();
// Prints something like: Wednesday
echo $date->format('l'), "\n";
// Prints something like: Wednesday 19th of October 2022 08:40:48 AM
echo $date->format('l jS \o\f F Y h:i:s A'), "\n";
/* use the constants in the format parameter */
// prints something like: Wed, 19 Oct 2022 08:40:48 +0000
echo $date->format(DateTimeInterface::RFC2822), "\n";
?>беше креиран со микросекунди.
Пример #3 Ескејпирање знаци при форматирање
<?php
$date = new DateTimeImmutable();
// prints something like: Wednesday the 19th
echo $date->format('l \t\h\e jS');
?>Форматирање Форматирај го времето/датумот GMT/UTC според локалните поставки За форматирање на датуми на други јазици, - Враќа датум форматиран според дадениот формат.
Белешки
Овој метод не користи локали. Целиот излез е на англиски.
Види Исто така
- Форматирај го времето/датумот GMT/UTC според локалните поставки DateTimeInterface::format()
Белешки од корисници 2 забелешки
Ad Escaping characters while formatting
To escape special characters, such as `\n`, `\t`, etc., is needed usage of multiple escaping to avoid expanding the formatting key or special character itself.
In my case I needed a new line sequence `\n` to be printed in the output as is i.e. as a plain text with backslash and letter n.
In the example bellow there are used letters `Y`, `n`, `W` that without escaping are recognized as format character representing full year (`Y`), month number(`n`) and week number (`W`).
<?php
/* Escaping new line special character \n to be a plain text */
// Now
$now = new DateTime();
// Prints something like: 2025\n41
echo $now->format('Y\\\\\nW');
/* Test of various escaping sequences */
// List of formats in single quotes
$formats = [
'YnW', // 20251041
'Y\nW', // 2025n41
'Y\\nW', // 2025n41
'Y\\\nW', // 2025\1041
'Y\\\\nW', // 2025\1041
'Y\\\\\nW', // 2025\n41
'Y\\\\\\nW', // 2025\n41
'Y\\\\\\\nW', // 2025\\1041
'Y\\\\\\\\nW', // 2025\\1041
'Y\\\\\\\\\nW', // 2025\\n41
'Y\\\\\\\\\\nW', // 2025\\n41
];
foreach($formats as $key => $format){
echo PHP_EOL . $key . '. format: '. var_export($format, true) ."\t".' output: '. $now->format($format);
}
?>
Prints something like:
0. format: 'YnW' output: 20251041
1. format: 'Y\\nW' output: 2025n41
2. format: 'Y\\nW' output: 2025n41
3. format: 'Y\\\\nW' output: 2025\1041
4. format: 'Y\\\\nW' output: 2025\1041
5. format: 'Y\\\\\\nW' output: 2025\n41
6. format: 'Y\\\\\\nW' output: 2025\n41
7. format: 'Y\\\\\\\\nW' output: 2025\\1041
8. format: 'Y\\\\\\\\nW' output: 2025\\1041
9. format: 'Y\\\\\\\\\\nW' output: 2025\\n41
10. format: 'Y\\\\\\\\\\nW' output: 2025\\n41