strftime

(PHP 4, PHP 5, PHP 7)

strftimeFormatează o oră/dată locală în conformitate cu setările locale

Descrierea

strftime ( string $format [, int $timestamp = time() ] ) : string

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.

Parametri

format

Următoarele caractere sunt recunoscute în cadrul parametrului 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
%k Reprezentarea din două cifre a orei în formatul cu 24 de ore, cu un spațiu în fața orelor dintr-o singură cifră De la 0 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. Nu este implementat după cum este descris în Windows. Vedeți mai jos pentru informații suplimentare. Exemplu: -0500 pentru US Eastern Time
%Z Abrevierea fusului orar. Nu este implementat după cum este descris în Windows. Vedeți mai jos pentru informații suplimentare. Exemplu: 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.

Avertizare

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.

Avertizare

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ă.

Modificatorii %z și %Z întorc denumirea fusului orar, în loc de deplasament sau abreviere.

Avertizare

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().

Valorile întoarse

Î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().

Erori/Excepții

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.

Istoricul schimbărilor

Versiune Descriere
5.1.0

Acum generează erori ale zonei orare de tip E_STRICT și E_NOTICE.

Exemple

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_OS03)) == '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' => '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 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'                       ( Hour in 24-hour format, with a space preceding single digits )
Unknown format : 'l'                       ( Hour in 12-hour format, with a space preceding 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'

Note

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.

A se vedea și