Conversion des formats de date en PHP
Vous pouvez rencontrer des situations où vous devez transformer des dates d'un format à un autre en PHP. Bien que PHP propose plusieurs fonctions de manipulation de date, il est essentiel de comprendre le processus et les pièges potentiels.
Considérez ce scénario : vous avez une date au format 'y-m-d-h-i-s' et vous souhaitez la convertir au format "y-m-d-h-i-s". Format 'Y-m-d H:i:s'. En règle générale, vous utiliserez strtotime() pour convertir la chaîne en horodatage, puis la transmettrez à date(). Cependant, dans votre cas, strtotime() renvoie false, vous laissant avec la date incorrecte « 1970-01-01 00:00:00 ».
Le problème réside dans le format de la chaîne d'entrée. strtotime() attend un horodatage valide ou une chaîne dans un format qu'il reconnaît. Malheureusement, « y-m-d-h-i-s » ne fait pas partie de ces formats reconnus.
Solutions
PHP 5.3 et versions ultérieures
Pour PHP 5.3 et versions ultérieures, la solution recommandée consiste à utiliser DateTime::createFromFormat(). Cette fonction vous permet de spécifier un masque précis en utilisant la syntaxe date() pour analyser les dates de chaîne entrantes. Pour votre cas, le code ressemblerait à ceci :
$datetime = DateTime::createFromFormat('y-m-d-h-i-s', $old_date); $new_date = $datetime->format('Y-m-d H:i:s');
PHP 5.2 et inférieur
En PHP 5.2 et inférieur, vous analysez manuellement les éléments (année , mois, jour, heure, minute, seconde) en utilisant substr() et transmettez les résultats à mktime(), qui générera un horodatage.
Cependant, cette approche est plus lourde. Il est préférable d'utiliser un format différent que strftime() peut comprendre, et qui prend en charge différents formats d'entrée de date. Par exemple, ce code fonctionne :
$old_date = date('l, F d y h:i:s'); $old_date_timestamp = strtotime($old_date); $new_date = date('Y-m-d H:i:s', $old_date_timestamp);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!