(PHP 4, PHP 5)
strftime — Formatează o oră/dată locală în conformitate cu setările locale
$format
[, int $timestamp
= time()
] )Formatează ora și/sau data în conformitate cu setările locale. Denumirile lunilor și a zilelor săptămânii și alte string-uri dependente de limbă sunt în conformitate cu setările locale stabilite prin fincția setlocale().
Nu toate specificările de convertire pot fi susținute de biblioteca dumneavoastră C, în care caz ele nu vor fi susținute de funcția PHP strftime(). În plus, nu toate platformele susțin timestamp-uri negative, de aceea domeniul de date poate fi limitat la valori nu mai mici de Epoca Unix. Aceasta înseamnă că %e, %T, %R și %D (pot fi mai multe), precum și date anterioare la Jan 1, 1970 nu vor funcționa în Windows, unele distibuții Linux, și alte câteva sisteme de operare. Pentru sisteme Windows o privire de ansamblu a specificatorilor de conversie susținuți poate fi găsită pe acest » website MSDN.
format
format |
Descriere | Exemplu de valori întoarse |
---|---|---|
Ziua | --- | --- |
%a | Reprezentarea textuală abreviată a zilei săptămânii | De la Sun până la Sat |
%A | Reprezentarea textuală deplină a zilei săptămânii | De la Sunday până la Saturday |
%d | Ziua lunii din două cifre (prefixată cu zero) | De la 01 până la 31 |
%e | Ziua lunii prefixată cu spațiu în cazul unei singure cifre. Implementarea pentru Windows nu coincide cu descrierea. Găsiți mai jos informații suplimentare. | De la 1 până la 31 |
%j | Ziua anului, 3 cifre prefixate cu zerouri | De la 001 până la 366 |
%u | Reprezentarea numerică a zilei săptămânii în conformitate cu ISO-8601 | De la 1 (Luni) până la 7 (Duminică) |
%w | Reprezentarea numerică a zilei săptămânii | De la 0 (Duminică) până la 6 (Sâmbătă) |
Săptămâna | --- | --- |
%U | Numărul săptămânii anului dat. Prima Duminică din an este începutul primei săptămâni | 13 (pentru a 13-a săptămână deplină a anului) |
%V | Numărul săptămânii anului dat în conformitate cu ISO-8601:1988, începând cu prima săptămână a anului cu cel puțin 4 zile de lucru, ziua de Luni fiind prima zi a săptămânii | De la 01 până la 53 (unde 53 reprezintă o săptămână suprapusă) |
%W | Reprezentarea numerică a săptămânii din an, începând cu prima zi de Luni ca prima săptămână | 46 (pentru a 46-a săptămână a anului începând cu Luni) |
Luna | --- | --- |
%b | Denumirea abreviată a lunii bazată pe setările locale | De la Jan până la Dec |
%B | Denumirea deplină a lunii bazată pe setările locale | De la January până la December |
%h | Denumirea abreviată a lunii bazată pe setările locale (un pseudonim pentru %b) | De la Jan până la Dec |
%m | Reprezentarea din două cifre a lunii | De la 01 (Ianuarie) până la 12 (Decembrie) |
Anul | --- | --- |
%C | Reprezentarea din două cifre a secolului (anul divizat la 100, trunchiat până la un întreg) | 19 pentru secolul 20 |
%g | Reprezentarea din două cifre a anului conform standardului ISO-8601:1988 (vezi %V) | Exemplu: 09 pentru 6 Ianuarie, 2009 |
%G | Versiunea deplină din patru cifre a %g | Exemplu: 2008 pentru 3 Ianuarie 2009 |
%y | Reprezentarea din două cifre a anului | Exemplu: 09 pentru 2009, 79 pentru 1979 |
%Y | Reprezentarea din patru cifre a anului | Exemplu: 2038 |
Ora | --- | --- |
%H | Reprezentarea din două cifre a orei în formatul cu 24 de ore | De la 00 până la 23 |
%I | Reprezentarea din două cifre a orei în formatul cu 12 ore | De la 01 până la 12 |
%l (litera minusculă 'L') | Ora în formatul cu 12 ore, cu un spațiu înaintea orei cu o singură cifră | De la 1 până la 12 |
%M | Reprezentarea din două cifre a minutei | De la 00 până la 59 |
%p | 'AM' sau 'PM' cu litere majuscule în dependență de oră | Exemplu: AM pentru 00:31, PM pentru 22:23 |
%P | 'am' sau 'pm' cu litere minuscule în dependență de oră | Exemplu: am pentru 00:31, pm pentru 22:23 |
%r | Echivalent cu "%I:%M:%S %p" | Exemplu: 09:34:17 PM pentru 21:34:17 |
%R | Echivalent cu "%H:%M" | Exemplu: 00:35 pentru 12:35 AM, 16:44 pentru 4:44 PM |
%S | Reprezentarea din două cifre a secundei | De la 00 până la 59 |
%T | Echivalent cu "%H:%M:%S" | Exemplu: 21:34:17 pentru 09:34:17 PM |
%X | Reprezentarea preferențială a orei în baza setărilor locale, fără dată | Exemplu: 03:59:16 sau 15:59:16 |
%z | Deplasamentul fusului orar relativ la UTC sau abrevierea (depinde de sistemul de operare) | Exemplu: -0500 sau EST pentru Eastern Time |
%Z | Deplasamentul/abrevierea fusului orar ce NU este dată de %z (depinde de sistemul de operare) | Exemplu: -0500 sau EST pentru Eastern Time |
Data și ora | --- | --- |
%c | Reprezentarea preferențială a datei și orei bazate pe setările locale | Exemplu: Tue Feb 5 00:45:10 2009 pentru 5 februarie 2009, ora 12:45:10 AM |
%D | Echivalent cu "%m/%d/%y" | Exemplu: 02/05/09 pentru February 5, 2009 |
%F | Echivalent cu "%Y-%m-%d" (utilizat deseori la bazele de date) | Exemplu: 2009-02-05 pentru February 5, 2009 |
%s | Momentul de timp după Epoca Unix (la fel ca și în cazul funcției time()) | Exemplu: 305815200 pentru September 10, 1979 08:40:00 AM |
%x | Reprezentarea preferențială a datei în baza setărilor locale, fără oră | Exemplu: 02/05/09 pentru February 5, 2009 |
Diverse | --- | --- |
%n | Trecerea la linie nouă ("\n") | --- |
%t | Caracterul Tab ("\t") | --- |
%% | Caracterul "procent" ("%") | --- |
Lungimea maximă a acestui parametru este de 1023 caractere.
Contrar standardului ISO-9899:1999, Sun Solaris pune în corespondență zilei de Duminică numărul 1. Ca rezultat, %u poate să nu funcționeze după cum este descris în acest manual.
Doar pentru Windows: Modificatorul %e nu este susținut în implementarea Windows a acestei funcții. Pentru a obține un rezultat analogic, utilizați modificatorul %#d în loc. Exemplul de mai jos ilustrează modalitatea de a scrie o funcție compatibilă cu orice platformă.
Doar pentru Mac OS X: Modificatorul %P nu este susținut în implementarea acestei funcții pe Mac OS X.
timestamp
Parametrul opțional timestamp
este un integer și este un moment de timp Unix și are valoarea
implicită a orei locale, dacă parametrul timestamp
nu
este indicat. Cu alte cuvinte, valoarea implicită este cea a funcției
time().
Întoarce un string formatat în corespundere cu parametrul
format
, utilizând timestamp
-ul
dat sau data și ora locală, dacă nu este furnizat un timestamp. Denumirile
lunilor și a zilelor săptămânii și alte string-uri dependente de limbă sunt
în corespundere cu setările locale stabilite cu
setlocale().
Fiecare apel al unei funcții de dată/oră va genera o E_NOTICE
dacă zona orară nu este validă și/sau un mesaj E_STRICT
sau E_WARNING
dacă se utilizează setările
sistemului sau variabila de mediu TZ. Vedeți de asemenea
date_default_timezone_set()
Deoarece valoarea întoarsă depinde de biblioteca C ce stă la bază, unii
specificatori de conversie nu sunt susținuți. În Windows, furnizarea
specificatorilor de conversie necunoscuți va rezulta în 5 mesaje
E_WARNING
și va întoarce FALSE
. În alte sisteme de
operare puteți să nu obțineți mesaje E_WARNING
iar
rezultatul poate să conțină specificatorii de conversie neconvertiți.
Versiunea | Descriere |
---|---|
5.1.0 | Acum generează erori ale zonei orare de tip
|
Acest exemplu va funcționa dacă aveți setările locale respective instalate în sistem.
Example #1 Exemple strftime()
<?php
setlocale(LC_TIME, "C");
echo strftime("%A");
setlocale(LC_TIME, "fi_FI");
echo strftime(" in Finnish is %A,");
setlocale(LC_TIME, "fr_FR");
echo strftime(" in French %A and");
setlocale(LC_TIME, "de_DE");
echo strftime(" in German %A.\n");
?>
Example #2 Exemplu al numerelor săptămânilor conform standardului ISO 8601:1988
<?php
/* December 2002 / January 2003
ISOWk M Tu W Thu F Sa Su
----- ----------------------------
51 16 17 18 19 20 21 22
52 23 24 25 26 27 28 29
1 30 31 1 2 3 4 5
2 6 7 8 9 10 11 12
3 13 14 15 16 17 18 19 */
// Afișează: 12/28/2002 - %V,%G,%Y = 52,2002,2002
echo "12/28/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y", strtotime("12/28/2002")) . "\n";
// Afișează: 12/30/2002 - %V,%G,%Y = 1,2003,2002
echo "12/30/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y", strtotime("12/30/2002")) . "\n";
// Afișează: 1/3/2003 - %V,%G,%Y = 1,2003,2003
echo "1/3/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2003")) . "\n";
// Afișează: 1/10/2003 - %V,%G,%Y = 2,2003,2003
echo "1/10/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/10/2003")) . "\n";
/* December 2004 / January 2005
ISOWk M Tu W Thu F Sa Su
----- ----------------------------
51 13 14 15 16 17 18 19
52 20 21 22 23 24 25 26
53 27 28 29 30 31 1 2
1 3 4 5 6 7 8 9
2 10 11 12 13 14 15 16 */
// Afișează: 12/23/2004 - %V,%G,%Y = 52,2004,2004
echo "12/23/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/23/2004")) . "\n";
// Afișează: 12/31/2004 - %V,%G,%Y = 53,2004,2004
echo "12/31/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/31/2004")) . "\n";
// Afișează: 1/2/2005 - %V,%G,%Y = 53,2004,2005
echo "1/2/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/2/2005")) . "\n";
// Afișează: 1/3/2005 - %V,%G,%Y = 1,2005,2005
echo "1/3/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2005")) . "\n";
?>
Example #3 Un exemplu de funcție compatibilă pe mai multe platforme, ce utilizează modificatorul %e
<?php
// 1 Ian: rezultă în: '%e%1%' (%%, e, %%, %e, %%)
$format = '%%e%%%e%%';
// Verifică dacă se rulează pe Windows pentru a găsi
// și înlocui în mod corect modificatorul %e
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
$format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format);
}
echo strftime($format);
?>
Example #4 Afișează toate formatele cunoscute și necunoscute.
<?php
// Describe the formats.
$strftimeFormats = array(
'A' => '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' => '',
'l' => 'Hour in 12-hour format, with a space preceeding 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";
}
?>
Exemplul de mai sus va afișa ceva similar cu:
Known format : 'A' = 'Friday' ( A full textual representation of the day ) Known format : 'B' = 'December' ( Full month name, based on the locale ) Known format : 'H' = '11' ( Two digit representation of the hour in 24-hour format ) Known format : 'I' = '11' ( Two digit representation of the hour in 12-hour format ) Known format : 'M' = '24' ( Two digit representation of the minute ) Known format : 'S' = '44' ( Two digit representation of the second ) Known format : 'U' = '48' ( Week number of the given year, starting with the first Sunday as the first week ) Known format : 'W' = '48' ( A numeric representation of the week of the year, starting with the first Monday as the first week ) Known format : 'X' = '11:24:44' ( Preferred time representation based on locale, without the date ) Known format : 'Y' = '2010' ( Four digit representation for the year ) Known format : 'Z' = 'GMT Standard Time' ( The time zone offset/abbreviation option NOT given by %z (depends on operating system) ) Known format : 'a' = 'Fri' ( An abbreviated textual representation of the day ) Known format : 'b' = 'Dec' ( Abbreviated month name, based on the locale ) Known format : 'c' = '12/03/10 11:24:44' ( Preferred date and time stamp based on local ) Known format : 'd' = '03' ( Two-digit day of the month (with leading zeros) ) Known format : 'j' = '337' ( Day of the year, 3 digits with leading zeros ) Known format : 'm' = '12' ( Two digit representation of the month ) Known format : 'p' = 'AM' ( UPPER-CASE "AM" or "PM" based on the given time ) Known format : 'w' = '5' ( Numeric representation of the day of the week ) Known format : 'x' = '12/03/10' ( Preferred date representation based on locale, without the time ) Known format : 'y' = '10' ( Two digit representation of the year ) Known format : 'z' = 'GMT Standard Time' ( Either the time zone offset from UTC or the abbreviation (depends on operating system) ) Known format : '%' = '%' ( A literal percentage character ("%") ) Unknown format : 'C' ( Two digit representation of the century (year divided by 100, truncated to an integer) ) Unknown format : 'D' ( Same as "%m/%d/%y" ) Unknown format : 'E' Unknown format : 'F' ( Same as "%Y-%m-%d" ) Unknown format : 'G' ( The full four-digit version of %g ) Unknown format : 'J' Unknown format : 'K' Unknown format : 'L' Unknown format : 'N' Unknown format : 'O' Unknown format : 'P' ( lower-case "am" or "pm" based on the given time ) Unknown format : 'Q' Unknown format : 'R' ( Same as "%H:%M" ) Unknown format : 'T' ( Same as "%H:%M:%S" ) Unknown format : '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 ) Unknown format : 'e' ( Day of the month, with a space preceding single digits ) Unknown format : 'f' Unknown format : 'g' ( Two digit representation of the year going by ISO-8601:1988 standards (see %V) ) Unknown format : 'h' ( Abbreviated month name, based on the locale (an alias of %b) ) Unknown format : 'i' Unknown format : 'k' Unknown format : 'l' ( Hour in 12-hour format, with a space preceeding single digits ) Unknown format : 'n' ( A newline character ("\n") ) Unknown format : 'o' Unknown format : 'q' Unknown format : 'r' ( Same as "%I:%M:%S %p" ) Unknown format : 's' ( Unix Epoch Time timestamp ) Unknown format : 't' ( A Tab character ("\t") ) Unknown format : 'u' ( ISO-8601 numeric representation of the day of the week ) Unknown format : 'v'
Notă: %G și %V, care se bazează pe numerele săptămânilor conform standardului ISO 8601:1988 pot oferi rezultate neașteptate (dar corecte) dacă sistemul de numerotare nu este înțeles în detaliu. Vedeți exemplele %V în această pagină a manualului.