(PHP 4, PHP 5)
strtotime — Transforme un texte anglais en timestamp
$time
[, int $now
= time()
] )
strtotime() essaye de lire une date au format
anglais dans la chaîne time
,
et de la transformer en timestamp Unix (le nombre de secondes depuis
le 1er Janvier 1970 à 00:00:00 UTC), relativement au timestamp
now
, ou à la date courante si ce dernier
est omis.
Chaque paramètre de la fonction utilise le décalage horaire par défaut à moins qu'un décalage horaire y soit explicitement paramétré. Soyez vigilant à ne pas utiliser un décalage horaire différent pour chaque paramètre à moins que ce soit ce dont vous avez besoin. Reportez-vous à la fonction date_default_timezone_get() afin de savoir comment définir un décalage horaire par défaut.
time
Une chaîne date/heure. Les formats valides sont expliqués dans la documentation sur les formats Date et Heure.
now
Le timestamp, représentant la date courante, utilisé pour le calcul relative des dates.
Retourne un timestamp en cas de succès, FALSE
sinon. Avant PHP 5.1.0,
cette fonction retournait -1 en cas d'échec.
Chaque appel à une fonction date/heure générera un message de type
E_NOTICE
si le fuseau horaire n'est pas valide,
et/ou un message de type E_STRICT
ou E_WARNING
si vous
utilisez la configuration du système ou la variable d'environnement
TZ. Voir aussi date_default_timezone_set()
Version | Description |
---|---|
5.3.0 |
Avant PHP 5.3.0, 24:00 n'était pas un format valide
et strtotime() retournait FALSE .
|
5.2.7 | En PHP 5 avant 5.2.7, demander le jour de la semaine correspondant au premier jour du mois ajoute de manière incorrecte une semaine au timestamp retourné. Ceci a été corrigé dans PHP 5.2.7 et supérieur. |
5.1.0 |
La fonction retourne maintenant FALSE en cas d'échec, au lieu de
-1.
|
5.1.0 |
Émet un message de type |
5.0.2 | En PHP 5 jusqu'à 5.0.2, "now" et les autres temps relatifs sont mal calculés depuis minuit d'aujourd'hui. Dans les autres versions, le calcul est correct. |
5.0.0 | Les microsecondes sont acceptées mais ignorées. |
4.4.0 | En PHP avant 4.4.0, "next" est mal calculé et considère +2. Une solution typique à ce problème est d'utiliser "+1". |
Exemple #1 Exemple avec strtotime()
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
Exemple #2 Vérification d'erreur
<?php
$str = 'Pas bon';
// Avant PHP 5.1.0, vous devez comparer avec -1, au lieu de false
if (($timestamp = strtotime($str)) === false) {
echo "La chaîne ($str) est boguée";
} else {
echo "$str == " . date('l dS \o\f F Y h:i:s A', $timestamp);
}
?>
Note:
Si le chiffre des années est précisé sur deux chiffres, les valeurs entre 00-69 correspondent à 2000-2069 et 70-99 à 1970-1999. Voyez les notes après concernant les différences possibles entres systèmes 32bits (des dates peuvent échoué après le 19/01/2038 à 03:14:07).
Note:
L'intervalle de validité d'un timestamp va du Vendredi 13 Décembre 1901 20:45:54 UTC au Mardi 19 Janvier 2038 03:14:07 UTC. (Cela correspond aux dates maximales et minimales pour un entier de 32 bits signé.) Toutes les plates-formes ne supportent pas les timestamp négatifs et dans ce cas, l'intervalle de date sera limitée à environs l'époque Unix. Cela signifie que les dates antérieures au 1 Janvier 1970 ne fonctionneront pas sous Windows, quelques distributions Linux et quelques autres systèmes. PHP 5.1.0 ainsi que les versions plus récentes outrepassent cette limitation.
Pour les versions 64-bit de PHP, l'intervalle valide d'un timestamp est réellement infini, sachant que 64 bits peut représenter approximativement 293 milliards d'années dans n'importe quelle direction.
Note:
Les dates aux formats m/d/y ou d-m-y formats sont analysées en regardant le séparateur entre les différentes parties: si le séparateur est un slash (/), alors le format américain m/d/y est supposé; si le séparateur est un tiret (-) ou un point (.), alors le format Européen d-m-y sera supposé.
Pour éviter des ambiguïtés éventuelles, le mieux est d'utiliser le format ISO 8601 (YYYY-MM-DD) ou encore DateTime::createFromFormat() lorsque possible.
Note:
L'utilisation de cette fonction sur des opérations mathématiques n'est pas conseillée. Il vaut mieux utiliser dans ce cas DateTime::add() et DateTime::sub() en PHP 5.3 et suivants, ou DateTime::modify() en PHP 5.2.