(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateTime::createFromFormat -- date_create_from_format — Analyse une heure au format texte selon le format spécifié.
Style orienté objet
$format
, string $datetime
, ?DateTimeZone $timezone
= null
): DateTime|falseStyle procédural
$format
, string $datetime
, ?DateTimeZone $timezone
= null
): DateTime|false
Retourne un nouvel objet DateTime représentant la date et l'heure spécifiées
par le texte time
, qui a été formaté dans le
format
donné.
format
Le format à utiliser. Voir les options de formatage ci-dessous. Dans la plupart des cas, les mêmes lettres que pour la fonction date() peuvent être utilisées.
format character |
Description | Exemple de valeurs analysées |
---|---|---|
Jour | --- | --- |
d et j |
Jour du mois, sur 2 chiffres, avec ou sans le zéro initial |
01 à 31 ou
1 à 31
|
D and l |
Une représentation textuelle du jour |
De Mon jusqu'à Sun ou
de Sunday jusqu'à Saturday
|
S |
Préfixe anglais du jour du mois, sur 2 caractères. Il sera ignoré lors de l'analyse. |
st , nd , rd ou
th .
|
z |
Le jour de l'année (en commençant à 0);
doit être précédé par Y ou y .
|
0 à 365 |
Mois | --- | --- |
F et M |
Une représentation textuelle du mois, comme January ou Sept |
De January à December ou
de Jan à Dec
|
m et n |
Une représentation numérique du mois, avec ou sans zéro initial |
De 01 à 12 ou
de 1 à 12
|
Année | --- | --- |
Y |
Une représentation complète de l'année, sur 4 chiffres | Exemples : 1999 ou 2003 |
y |
Une représentation partielle de l'année, sur 2 chiffres (qui doit être dans l'intervalle 1970-2069, inclus) |
Exemples :
99 ou 03
(seront interprétés comme l'année 1999 et l'année
2003 , respectivement)
|
Heure | --- | --- |
a et A |
Ante meridiem et Post meridiem | am ou pm |
g et h |
L'heure au format 12-heures, avec ou sans zéro initial |
De 1 à 12 ou
de 01 à 12
|
G et H |
L'heure au format 24-heures, avec ou sans zéro initial |
De 0 à 23 ou
de 00 à 23
|
i |
Les minutes, avec un zéro initial | De 00 à 59 |
s |
Les secondes, avec un zéro initial | De 00 à 59 |
v |
Les millisecondes (jusqu'à 3 chiffres) | Exemple: 12 , 345 |
u |
Les microsecondes (jusqu'à 6 chiffres) | Exemple : 45 , 654321 |
Fuseau horaire | --- | --- |
e , O ,
P et T
|
L'identifiant du fuseau horaire, ou la différence en heures avec UTC, ou la différence avec UTC avec deux points (:) entre les heures et les minutes, ou l'abréviation du fuseau horaire | Exemples : UTC , GMT ,
Atlantic/Azores ou
+0200 ou +02:00 ou
EST , MDT
|
Date/heure complète | --- | --- |
U |
Le nombre de secondes depuis l'époque Unix (January 1 1970 00:00:00 GMT) | Exemple : 1292177455 |
Espace et séparateurs | --- | --- |
(espace) |
Un espace ou une tabulation | Exemple : |
# |
Un des symboles de séparation suivants : ; ,
: , / , . ,
, , - , ( ou
)
|
Exemple : / |
; ,
: , / , . ,
, , - , ( ou
)
|
Le caractère spécifié. | Exemple : - |
? |
Un octet aléatoire | Exemple : ^ (Be aware that for UTF-8
characracters you might need more than one ? .
In this case, using * is probably what you want
instead) |
* |
Octets aléatoires jusqu'au prochain séparateur ou chiffre | Exemple : * dans Y-*-d avec la chaîne
2009-aWord-08 trouvera la chaîne
aWord |
! |
Réinitialise tous les champs (année, mois, jour, heure, minute,
seconde ainsi que les informations quant au fuseau horaire) à
des valeurs similaire à zéro (0 pour heure,
minute, seconde et fraction, 1 pour mois et jour,
1970 pour l'année et UTC
pour l'information de fuseau horaire)
|
Sans le caractère !, tous les champs seront
définis à la date et heure courante. |
| |
Réinitialise tous les champs (année, mois, jour, heure, minute, seconde ainsi que les informations quant au fuseau horaire) à valeurs similaire à zéro s'ils n'ont pas encore été analysés | Y-m-d| définira l'année, le mois et le jour
avec les informations trouvées dans la chaîne analysée, mais aussi
l'heure, les minutes et les secondes à 0. |
+ |
Si le spécifieur de format est présent, les données restantes de la chaîne ne causeront pas une erreur, mais une alerte | Utilisez la méthode DateTime::getLastErrors() pour identifier la présence de données restantes. |
Pour inclure un caractère littéral dans format
,
vous devez l'échapper avec un antislash (\
).
Les caractères non reconnus dans le format feront échouer l'analyse et un message d'erreur sera ajouté à la structure retournée. Vous pouvez utiliser la méthode DateTime::getLastErrors() pour récupérer les messages d'erreur.
Si format
n'est pas composé du caractère
!
alors les valeurs de temps générées qui sont absentes de
format
prendront comme valeur le temps système.
Si format
contient le caractère
!
, alors les valeurs de temps générées qui sont absentes de
format
ainsi que les valeurs situées à gauche de
!
prendront des valeurs mesurées depuis l'époque Unix.
Le début de l'époque Unix est le 01/01/1970 à 00:00:00 UTC.
datetime
Chaîne représentant le moment.
timezone
Un objet DateTimeZone représentant le fuseau horaire désiré.
Si timezone
est omis ou null
et
datetime
ne contient pas de fuseau,
le fuseau courant sera utilisé.
Note:
Le paramètre
timezone
et le fuseau courant sont ignorés lorsque le paramètredatetime
contient un timestamp (e.g.946684800
) ou précise un fuseau (e.g.2010-01-28T15:00:00+02:00
).
Retourne un nouvel objet DateTime ou false
si une erreur survient.
Version | Description |
---|---|
7.3.0 |
Le spécificateur de format v a été ajouté.
|
Exemple #1 Exemple avec DateTime::createFromFormat()
Style orienté objet
<?php
$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
echo $date->format('Y-m-d');
?>
Style procédural
<?php
$date = date_create_from_format('j-M-Y', '15-Feb-2009');
echo date_format($date, 'Y-m-d');
?>
Les exemples ci-dessus vont afficher :
2009-02-15
Exemple #2 Autres exemples avec DateTime::createFromFormat()
<?php
echo 'Date courante: ' . date('Y-m-d H:i:s') . "\n";
$format = 'Y-m-d';
$date = DateTime::createFromFormat($format, '2009-02-15');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
$format = 'Y-m-d H:i:s';
$date = DateTime::createFromFormat($format, '2009-02-15 15:16:17');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
$format = 'Y-m-!d H:i:s';
$date = DateTime::createFromFormat($format, '2009-02-15 15:16:17');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
$format = '!d';
$date = DateTime::createFromFormat($format, '15');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
?>
Résultat de l'exemple ci-dessus est similaire à :
Date courante: 2010-04-23 10:29:35 Format: Y-m-d; 2009-02-15 10:29:35 Format: Y-m-d H:i:s; 2009-02-15 15:16:17 Format: Y-m-!d H:i:s; 1970-01-15 15:16:17 Format: !d; 1970-01-15 00:00:00
Exemple #3 Texte de Format avec des caractères litéraux
<?php
echo DateTime::createFromFormat('H\h i\m s\s','23h 15m 03s')->format('H:i:s');
?>
Résultat de l'exemple ci-dessus est similaire à :
23:15:03