strftimeFormate une date/heure locale avec la configuration locale
&warn.deprecated.function-8-1-0.alternatives;
dateIntlDateFormatter::format
&reftitle.description;
stringfalsestrftimestringformatintnulltimestamp&null;
Formate une date et/ou une heure suivant la localisation locale. Les noms
des mois, des jours de la semaine mais aussi d'autres chaînes dépendant
de la location, respecteront la localisation courante définie par la fonction
setlocale.
Tous les caractères modificateurs ne sont pas toujours supportés par
toutes les bibliothèques C. Dans ce cas, ils ne seront pas supportés
par PHP non plus. De plus, toutes les plates-formes ne supportent pas
les timestamps négatifs, et vos dates pourraient être limitées par le
début de l'époque Unix. Cela signifie que
%e, %T, %R et %D
(et peut être d'autres) et les dates antérieures au
1er Janvier 1970 ne fonctionneront pas sous Windows,
sur certaines distributions de Linux, et sur certains systèmes d'exploitation.
Pour Windows, une liste complète des options de conversion est disponible
sur le site de MSDN.
Utilisez plutôt la méthode IntlDateFormatter::format.
&reftitle.parameters;
format
Les caractères suivants sont reconnus dans le paramètre
formatformatDescriptionExemple de valeurs retournéesJour------%aNom abrégé du jour de la semaineDe Sun à Sat%ANom complet du jour de la semaineDe Sunday à Saturday%dJour du mois en numérique, sur 2 chiffres (avec le zéro initial)De 01 à 31%eJour du mois, avec un espace précédant le premier chiffre.
L'implémentation Windows est différente, voyez après pour plus d'informations.De 1 à 31%jJour de l'année, sur 3 chiffres avec un zéro initial001 à 366%uReprésentation ISO-8601 du jour de la semaineDe 1 (pour Lundi) à 7 (pour Dimanche)%wReprésentation numérique du jour de la semaineDe 0 (pour Dimanche) à 6 (pour Samedi)Semaine------%UNuméro de la semaine de l'année donnée, en commençant par le premier
Lundi comme première semaine13 (pour la 13ème semaine pleine de l'année)%VNuméro de la semaine de l'année, suivant la norme ISO-8601:1988,
en commençant comme première semaine, la semaine de l'année contenant au moins
4 jours, et où Lundi est le début de la semaineDe 01 à 53 (où 53
compte comme semaine de chevauchement)%WUne représentation numérique de la semaine de l'année, en commençant
par le premier Lundi de la première semaine46 (pour la 46ème semaine de la semaine commençant
par un Lundi)Mois------%bNom du mois, abrégé, suivant la localeDe Jan à Dec%BNom complet du mois, suivant la localeDe January à December%hNom du mois abrégé, suivant la locale (alias de %b)De Jan à Dec%mMois, sur 2 chiffresDe 01 (pour Janvier) à 12 (pour Décembre)Année------%CReprésentation, sur 2 chiffres, du siècle (année divisée par 100, réduit à un entier)19 pour le 20ème siècle%gReprésentation, sur 2 chiffres, de l'année, compatible avec les standards ISO-8601:1988 (voyez %V)Exemple : 09 pour la semaine du 6 janvier 2009%GLa version complète à quatre chiffres de %gExemple : 2009 pour la semaine du 3 janvier 2009%yL'année, sur 2 chiffresExemple : 09 pour 2009, 79 pour 1979%YL'année, sur 4 chiffresExemple : 2038Heure------%HL'heure, sur 2 chiffres, au format 24 heuresDe 00 à 23%kL'heure au format 24 heures, avec un espace précédant un
seul chiffreDe 0 à 23%IHeure, sur 2 chiffres, au format 12 heuresDe 01 à 12%l ('L' minuscule)Heure, au format 12 heures, avec un espace précédant un seul chiffreDe 1 à 12%MMinute, sur 2 chiffresDe 00 à 59%p'AM' ou 'PM', en majuscule, basé sur l'heure fournie
Exemple : AM pour 00:31, PM pour 22:23.
Le résultat exact dépend du système d'exploitation, et ils peuvent également renvoyer des variantes en minuscules,
ou des variantes avec des points (comme a.m.).
%P'am' ou 'pm', en minuscule, basé sur l'heure fournie
Exemple : am pour 00:31, pm pour 22:23.
Non pris en charge par tous les systèmes d'exploitation.
%rIdentique à "%I:%M:%S %p"Exemple : 09:34:17 PM pour 21:34:17%RIdentique à "%H:%M"Exemple : 00:35 pour 12:35 AM, 16:44 pour 4:44 PM%SSeconde, sur 2 chiffresDe 00 à 59%TIdentique à "%H:%M:%S"Exemple : 21:34:17 pour 09:34:17 PM%XReprésentation de l'heure, basée sur la locale, sans la dateExemple : 03:59:16 ou 15:59:16%z
Le décalage horaire. Non implémenté tel que décrit sous Windows.
Voir plus bas pour plus d'informations.Exemple : -0500 pour l'heure US de l'est%Z
L'abréviation du décalage horaire. Non implémenté tel que décrit sous
Windows. Voir plus bas pour plus d'informations.
Exemple : EST pour l'heure de l'Est
L'heure et la date------%cDate et heure préférées, basées sur la localeExemple : Tue Feb 5 00:45:10 2009 pour
le 5 février 2009 à 12:45:10 AM%DIdentique à "%m/%d/%y"Exemple : 02/05/09 pour le 5 février 2009%F
Identique à "%Y-%m-%d"
(utilisé habituellement par les bases de données)
Exemple : 2009-02-05 pour le 5 février 2009%sTimestamp de l'époque Unix (identique à la fonction time)Exemple : 305815200 pour le 10 septembre 1979 08:40:00 AM%xReprésentation préférée de la date, basée sur la locale, sans l'heureExemple : 02/05/09 pour le 5 février 2009Divers------%nUne nouvelle ligne ("\n")---%tUne tabulation ("\t")---%%Le caractère de pourcentage ("%")---
Contrairement à la norme ISO-9899:1999, Sun Solaris
commence avec le Dimanche à 1. Aussi, le format %u
ne fonctionnera pas tel que décrit dans ce manuel.
Windows seulement :
Le modificateur %e
n'est pas supporté sous Windows. Pour calculer la valeur, le modificateur
%#d peut être utilisé à la place. L'exemple d'après illustre la
manière d'écrire un code cross-plateforme.
Les modificateurs %z et %Z
retournent tous les deux le nom du fuseau horaire au lieu du décalage
ou de l'abréviation.
macOS et musl uniquement : Le modificateur %P
n'est pas supporté par l'implémentation de cette fonction sous macOS.
&date.timestamp.description;
&reftitle.returnvalues;
Retourne une &string; formatée suivant le paramètre format
donné, en utilisant le paramètre timestamp ou la date locale
courante si aucun timestamp n'est fourni. Les noms des mois, des jours de la
semaine mais aussi d'autres chaînes dépendant de la location, respecteront
la localisation courante définie par la fonction setlocale.
&reftitle.errors;
&date.timezone.errors.description;
Vu que la sortie dépend de la bibliothèque C sous-jacente, quelques
spécificateurs de conversion ne sont pas supportés. Sous Windows,
le fait de fournir un spécificateur de conversion inconnu retournera
5 messages de niveau E_WARNING et retournera &false;
au final. Sous d'autres systèmes d'exploitation, vous ne recevrez aucun
message de niveau E_WARNING et la sortie contiendra les
spécificateurs non convertis.
&reftitle.changelog;
&Version;&Description;8.0.0timestamp est désormais nullable.
&reftitle.examples;
Cet exemple ne fonctionnera que si vous avez les locales respectives
installées sur votre système.
Exemple avec strftime
]]>
Exemple au format de date ISO 8601:1988
]]>
%e fonctionnant sous toute plateforme
]]>
Affiche tous les formats connus ou non
'Une représentation textuelle complète du jour',
'B' => 'Nom du mois complet, basé sur la locale',
'C' => 'Représentation sur 2 chiffres de l\'année (année, divisée par 100, tronquée en entier)',
'D' => 'Identique à "%m/%d/%y"',
'E' => '',
'F' => 'Identique à "%Y-%m-%d"',
'G' => 'La version complète, sur 4 chiffres de %g',
'H' => 'Une représentation sur 2 chiffres de l\'heure au format 24-heures',
'I' => 'Une représentation sur 2 chiffres de l\'heure au format 12-heures',
'J' => '',
'K' => '',
'L' => '',
'M' => 'Une représentation sur 2 chiffres des minutes',
'N' => '',
'O' => '',
'P' => '"am" ou "pm" (en minuscule) basé sur l\'heure courante',
'Q' => '',
'R' => 'Identique à "%H:%M"',
'S' => 'Une représentation sur 2 chiffres des secondes',
'T' => 'Identique à "%H:%M:%S"',
'U' => 'Numéro de la semaine pour l\'année courante, en commençant par le premier Dimanche comme première semaine',
'V' => 'ISO-8601:1988 numéro de la semaine de l\'année courante, commençant par la première semaine de l\'année avec au moins 4 jours de semaine, avec le Lundi comme début de semaine',
'W' => 'Une représentation numérique de la semaine de l\'année, en commençant par le premier Lundi comme première semaine',
'X' => 'Représentation préférée pour l\'heure, basée sur la locale, sans la date',
'Y' => 'Une représentation sur 4 chiffres de l\'année',
'Z' => 'L\'abréviation du décalage horaire, non fournie par %z (dépend sur système d\'exploitation)',
'a' => 'L\'abréviation de la représentation textuelle du jour',
'b' => 'L\'abréviation du nom du mois, basée sur la locale',
'c' => 'Timestamp préféré basé sur la locale',
'd' => 'Jour du mois sur 2 chiffres (avec le zéro initial)',
'e' => 'Jour du mois, avec un espace précédent un seul chiffre',
'f' => '',
'g' => 'Une représentation sur 2 chiffres de l\'année au format ISO-8601:1988 (voir %V)',
'h' => 'Abréviation du nom du mois, basée sur la locale (alias de %b)',
'i' => '',
'j' => 'Jour de l\'année, sur 3 chiffres avec zéro initial',
'k' => 'Heure, au format 24-heures, avec un espace précédant un seul chiffre',
'l' => 'Heure, au format 12-heures, avec un espace précédant un seul chiffre',
'm' => 'Une représentation du mois sur 2 chiffres',
'n' => 'Un caractère de nouvelle ligne ("\n")',
'o' => '',
'p' => '"AM" ou "PM" (en majuscule) basé sur l\'heure courante',
'q' => '',
'r' => 'Identique à "%I:%M:%S %p"',
's' => 'Timestamp par rapport à l\'époque Unix',
't' => 'Un caractère de tabulation ("\t")',
'u' => 'Représentation numérique du jour de la semaine au format ISO-8601',
'v' => '',
'w' => 'Représentation numérique du jour de la semaine',
'x' => 'Représentation préférée de la date, basée sur la locale, sans l\'heure',
'y' => 'Représentation de l\'année sur 2 chiffres',
'z' => 'Soit le décalage horaire depuis UTC ou son abréviation (suivant le système d\'exploitation)',
'%' => 'Un caractère pourcentage ("%")',
);
// Résultats
$strftimeValues = array();
// 2value les formats tout en supprimant les erreurs
foreach ($strftimeFormats as $format => $description) {
if (false !== ($value = @strftime("%{$format}"))) {
$strftimeValues[$format] = $value;
}
}
// Trouve la valeur la plus longue
$maxValueLength = 2 + max(array_map('strlen', $strftimeValues));
// Affiche tous les formats connus
foreach ($strftimeValues as $format => $value) {
echo "Format connu : '{$format}' = ", str_pad("'{$value}'", $maxValueLength), " ( {$strftimeFormats[$format]} )\n";
}
// Affiche tous les formats non connus
foreach (array_diff_key($strftimeFormats, $strftimeValues) as $format => $description) {
echo "Format inconnu : '{$format}' ", str_pad(' ', $maxValueLength), ($description ? " ( {$description} )" : ''), "\n";
}
?>
]]>
&example.outputs.similar;
&reftitle.notes;
%G et %V, qui sont basées
sur la semaine ISO 8601:1988, peut conduire
à des résultats inattendus (bien que corrects) si le
système de numérotation n'est pas connu. Voir l'exemple
%V de cette page.
&reftitle.seealso;
IntlDateFormatter::formatDateTimeInterface::formatOutil de formatage strftime() en lignesetlocalemktimestrptimegmstrftimegroupe de spécifications de strftime