En PHP, vous avez fourni du code qui tente de convertir une date au format jj/mm/aaaa au format AAAA-MM-JJ. Cependant, vous avez rencontré un problème où la conversion renvoie une valeur inattendue de 1970-01-01.
Le problème réside dans l'utilisation du PHP strtotime( ) fonction. Lors de l'analyse d'une date au format jj/mm/aaaa, strtotime() suppose que les deux premiers chiffres représentent le mois (mm) et les deux chiffres suivants représentent le jour (jj). Par exemple, le 20/02/2000 serait interprété comme le 20 février 2000.
Cependant, dans votre cas, la date dans l'URL est au format jour/mois/année (jj/mm/aaaa). . Cela signifie que les deux premiers chiffres représentent le jour et les deux chiffres suivants représentent le mois. Par conséquent, strtotime() interprète mal la date et renvoie une valeur incorrecte.
Pour résoudre ce problème, il est recommandé d'utiliser DateTime :: méthode createFromFormat() au lieu de strtotime(). Cette méthode vous permet de spécifier le format exact de la chaîne de date, garantissant ainsi qu'elle est analysée correctement. Voici une version mise à jour de votre code :
<code class="php">$date = $date1 = DateTime::createFromFormat('d/m/Y', '20/02/2000'); $D->query = $date->format('Y-m-d'); // 2000-02-20</code>
En utilisant DateTime::createFromFormat(), vous pouvez convertir avec précision la date de l'URL au format AAAA-MM-JJ.
Pour éviter des problèmes similaires à l'avenir, il est important de formater correctement les dates dans les URL. Si vous transmettez des dates au format jj/mm/aaaa, assurez-vous que les deux premiers chiffres représentent le jour et que les deux chiffres suivants représentent le mois. Vous pouvez également envisager d'utiliser un format plus standardisé tel que AAAA-MM-JJ.
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!