strftime Formatuje lokalną datę/czas zgodnie z lokalizacją &warn.deprecated.function-8-1-0.alternatives; date IntlDateFormatter::format &reftitle.description; #[\Deprecated] stringfalsestrftime stringformat intnulltimestamp&null; Formatuje datę i lub/czas zgodnie z ustawieniami lokalizacji. Nazwy miesięcy i i dni tygodnia oraz inne ciągi zależne od języka, przestrzegają obecnej lokalizacji ustawionej przez setlocale. Nie wszystkie symbole konwersji mogą być wspierane przez Twoją bibliotekę C i w takim wypadku nie będą wspierane przez funkcję strftime z PHP. Ponadto, nie wszystkie platformy wspierają ujemne zaczniki czasu, więc zakres dat może być ograniczony do początku epoki Uniksa. Oznacza to, że %e, %T, %R i %D (oraz możliwe, że inne) - tak samo jak daty przed 01.01.1970 - to wszystko nie zadziała na Windows, niektórych dystrybucjach Linuksa i kilku innych systemach operacyjnych. Przegląd symboli konwersji wspieranych przez system Windows można znaleźć na MSDN. &reftitle.parameters; format Symbole rozpoznawane w treści argumentu <parameter>format</parameter> format Opis Przykład zwróconej wartości Dzień --- --- %a Skrótowa tekstowa nazwa dnia Sun do Sat %A Pełna tekstowa nazwa dnia Sunday do Saturday %d Dwucyfrowy zapis dnia miesiąca (z zerami wiodącymi) 01 do 31 %e Dzień miesiąca ze spacją poprzedzającą wartości jednocyfrowe. Niedostępne w systemie Windows, jak już napisano. Więcej informacji znajdziesz poniżej. 1 do 31 %j Dzień roku, 3 cyfry z zerami wiodącymi 001 do 366 %u Numeryczne przedstawienie dnia tygodnia zgodne z ISO-8601 1 (poniedziałek) do 7 (niedziela) %w Numeryczne przedstawienie dnia tygodnia 0 (niedziela) do 6 (sobota) Tydzień --- --- %U Numer tygodnia w danym roku, poczynając od pierwszej niedzieli, jako pierwszego tygodnia 13 (dla trzynastego tygodnia w roku) %V Numer tygonia w danym roku zgodny z ISO-8601:1988, poczynając od pierwszego tygodnia, z przynajmniej czterema dniami w tym roku, poniedziałek jest początkiem tygodnia 01 do 53 (gdzie 53 to tydzień przejściowy) %W Numer tygodnia w danym roku, poczynając od pierwszego poniedziałku, jako pierwszego tygodnia 46 (dla 46 tygodnia roku rozpoczynającego się poniedziałkiem) Miesiąc --- --- %b Skrótowa nazwa miesiąca, zgodnie z lokalizacją Sty do Gru %B Pełna nazwa miesiąca, zgodnie z lokalizacją Styczeń do Grudzień %h Skrótowa nazwa miesiąca, zgodnie z lokalizacją (alias dla %b) Sty do Gru %m Dwucyfrowa reprezentacja miesiąca 01 (styczeń) do 12 (grudzień) Rok --- --- %C Dwucyfrowa reprezentacja stulecia (rok podzielony na 100, przycięty do liczby całkowitej) 19 dla dwudziestego wieku %g Dwucyfrowa reprezentacja roku zgodna ze standardem ISO-8601:1988 (zobacz %V) Przykład: 09 dla tygodnia z 06.01.2009 %G Pełna, czterocyfrowa wersja %g Przykład: 2008 dla tygodnia z 03.01.2009 %y Dwucyfrowa reprezentacja roku Przykład: 09 dla roku 2009, 79 dla roku 1979 %Y Czterocyfrowa reprezentacja roku Przykład: 2038 Czas --- --- %H Dwucyfrowa reprezentacja godziny, w formacie 24-godzinnym 00 do 23 %k Godzina w formacie 24-godzinnym, ze spacją poprzedzającą wartości jednocyfrowe 0 do 23 %I Dwucyfrowa reprezentacja godziny, w formacie 12-godzinnym 01 do 12 %l (małe 'L') Dwucyfrowa reprezentacja godziny, w formacie 12-godzinnym, ze spacją poprzedzającą wartości jednocyfrowe 1 do 12 %M Dwucyfrowa reprezentacja minuty 00 do 59 %p 'AM' lub 'PM' zapisane wielkimi literami, zależnie od podanego czasu Przykład: AM dla 00:31, PM dla 22:23. Dokładny wynik zależy od systemu operacyjnego, może zostać zwrócony zapis małymi literami lub zapis z kropkami (tj. a.m.) %P 'am' lub 'pm' zapisane malymi literami, zależnie od podanego czasu Przykład: am dla 00:31, pm dla 22:23. Nie jest wspierane przez wszystkie systemy operacyjne. %r To samo co "%I:%M:%S %p" Przykład: 09:34:17 PM dla 21:34:17 %R To samo co "%H:%M" Przykład: 00:35 dla 12:35 AM, 16:44 dla 4:44 PM %S Dwucyfrowa reprezentacja sekundy 00 do 59 %T To samo co "%H:%M:%S" Przykład: 21:34:17 dla 09:34:17 PM %X Preferowane przedstawienie czasu, zależne od lokalizacji, bez daty Przykład: 03:59:16 lub 15:59:16 %z Przesunięcie strefy czasowej. Niedostępne na Windows, jak już napisano. Więcej informacji znajdziesz poniżej. Przykład: -0500 dla czasu w US Eastern Time %Z Skrót strefy czasowej. Niedostępne na Windows, jak już napisano. Więcej informacji znajdziesz poniżej. Przykład: EST dla czasu w Eastern Time Znaczniki daty i czasu --- --- %c Preferowany znacznik daty i czasu w obecnej lokalizacji Przykład: Pon 05.02.2009 00:45:10 dla February 5, 2009 at 12:45:10 AM %D To samo co "%m/%d/%y" Przykład: 02/05/09 dla 02.05.2009 %F To samo co "%Y-%m-%d" (często używane w znacznikach dat baz danych) Przykład: 2009-02-05 dla 02.05.2009 %s Uniksowy znacznik czasu (to samo co funkcja time) Przykład: 305815200 dla 10.09.1979 08:40:00 %x Preferowana reprezentacja daty w obecej lokalizacji, bez czasu Przykład: 02/05/09 dla 05.02.2009 Różne --- --- %n Znak nowej linii ("\n") --- %t Tabulator ("\t") --- %% Znak procenta ("%") ---
W przeciwieństwie do ISO-9899:1999, system Sun Solaris podaje niedzielę jako 1. W wyniku tego, %u może nie działać tak jak opisano to w tym podręczniku. Tylko dla Windows: Modyfikator %e nie jest wspierany w Windowsowej implementatacji tej funkcji. Aby otrzymać tą wartość, można użyć modyfikatora %#d. Przykład poniżej pokazuje jak napisać funkcję kompatybilną między platformami. Modyfikatory %z i %Z zwracają nazę strefy czasowej zamiast jej przesunięcia czy skrótu. Tylko dla macOS i musl: Modyfikator %P nie jest wspierany w implementacji tej funkcji dla macOS.
&date.timestamp.description;
&reftitle.returnvalues; Zwraca łańcuch znaków sformatowany zgodnie z argumentem format używając czasu podanego jako timestamp lub obecnego czasu lokalnego, jeśli nie podano tego argumentu. Nazwy miesięcy i dni tygodnia oraz inne ciągi znaków zależne od języka uwzględniają obecną lokalizację ustawioną przez setlocale. Funkcja zwraca &false; jeśli format jest pusty, zawiera niewspierane modyfikatory konwersji lub jeśli zwrócony ciąg znaków byłby dłuższy niż 4095 znaków. &reftitle.errors; &date.timezone.errors.description; Ponieważ wynik funkcji zależy od działającej pod spodem biblioteki C, niektóre modyfikatory nie są wspierane. Na Windows, podanie nieznanego modyfikatora zaskutkuje wygenerowaniem 5 wiadomości E_WARNING i zwróceniem &false;. Na innych systemach możesz nie otrzymać żadnych wiadomości E_WARNING, a wyjście może zawierać nieskonwertowane modyfikatory. &reftitle.changelog; &Version; &Description; 8.0.0 Parametr timestamp dopuszcza teraz &null;. &reftitle.examples; Ten przykład zadziała, jeżeli masz zainstalowane w systemie odpowiednie lokalizacje. Przykłady lokalizacji <function>strftime</function> Przykład numerów tygodnia zgodnych z ISO 8601:1988 Przykład wieloplatformowego użycia modyfikatora <literal>%e</literal> Wyświetl wszystkie znane i nieznane formaty 'A full textual representation of the day', 'B' => 'Full month name, based on the locale', 'C' => 'Two digit representation of the century (year divided by 100, truncated to an integer)', 'D' => 'Same as "%m/%d/%y"', 'E' => '', 'F' => 'Same as "%Y-%m-%d"', 'G' => 'The full four-digit version of %g', 'H' => 'Two digit representation of the hour in 24-hour format', 'I' => 'Two digit representation of the hour in 12-hour format', 'J' => '', 'K' => '', 'L' => '', 'M' => 'Two digit representation of the minute', 'N' => '', 'O' => '', 'P' => 'lower-case "am" or "pm" based on the given time', 'Q' => '', 'R' => 'Same as "%H:%M"', 'S' => 'Two digit representation of the second', 'T' => 'Same as "%H:%M:%S"', 'U' => 'Week number of the given year, starting with the first Sunday as the first week', 'V' => 'ISO-8601:1988 week number of the given year, starting with the first week of the year with at least 4 weekdays, with Monday being the start of the week', 'W' => 'A numeric representation of the week of the year, starting with the first Monday as the first week', 'X' => 'Preferred time representation based on locale, without the date', 'Y' => 'Four digit representation for the year', 'Z' => 'The time zone offset/abbreviation option NOT given by %z (depends on operating system)', 'a' => 'An abbreviated textual representation of the day', 'b' => 'Abbreviated month name, based on the locale', 'c' => 'Preferred date and time stamp based on local', 'd' => 'Two-digit day of the month (with leading zeros)', 'e' => 'Day of the month, with a space preceding single digits', 'f' => '', 'g' => 'Two digit representation of the year going by ISO-8601:1988 standards (see %V)', 'h' => 'Abbreviated month name, based on the locale (an alias of %b)', 'i' => '', 'j' => 'Day of the year, 3 digits with leading zeros', 'k' => 'Hour in 24-hour format, with a space preceding single digits', 'l' => 'Hour in 12-hour format, with a space preceding single digits', 'm' => 'Two digit representation of the month', 'n' => 'A newline character ("\n")', 'o' => '', 'p' => 'UPPER-CASE "AM" or "PM" based on the given time', 'q' => '', 'r' => 'Same as "%I:%M:%S %p"', 's' => 'Unix Epoch Time timestamp', 't' => 'A Tab character ("\t")', 'u' => 'ISO-8601 numeric representation of the day of the week', 'v' => '', 'w' => 'Numeric representation of the day of the week', 'x' => 'Preferred date representation based on locale, without the time', 'y' => 'Two digit representation of the year', 'z' => 'Either the time zone offset from UTC or the abbreviation (depends on operating system)', '%' => 'A literal percentage character ("%")', ); // Results $strftimeValues = array(); // Evaluate the formats whilst suppressing any errors foreach ($strftimeFormats as $format => $description) { if (False !== ($value = @strftime("%{$format}"))) { $strftimeValues[$format] = $value; } } // Find the longest value $maxValueLength = 2 + max(array_map('strlen', $strftimeValues)); // Report known formats foreach ($strftimeValues as $format => $value) { echo "Known format : '{$format}' = ", str_pad("'{$value}'", $maxValueLength), " ( {$strftimeFormats[$format]} )\n"; } // Report unknown formats foreach (array_diff_key($strftimeFormats, $strftimeValues) as $format => $description) { echo "Unknown format : '{$format}' ", str_pad(' ', $maxValueLength), ($description ? " ( {$description} )" : ''), "\n"; } ]]> &example.outputs.similar; &reftitle.notes; %G i %V, które bazują na numerach tygodni ISO 8601:1988, mogą zwrócić nieprzewidziane (choć poprawne) wyniki jeżeli system numeracji nie został dogłębnie zrozumiany. Zobacz przykłady dla %V na tej stronie podręcznika. &reftitle.seealso; IntlDateFormatter::format DateTimeInterface::format Narzędzie online do tworzenia formatów strftime() setlocale mktime strptime gmstrftime Specyfikacja Open Group dla strftime