Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi mon code PHP renvoie-t-il le 01/01/1970 lors de la conversion des dates jj/mm/aaaa dans les URL ?

Patricia Arquette
Libérer: 2024-11-06 04:26:02
original
1030 Les gens l'ont consulté

Why Does My PHP Code Return 1970-01-01 When Converting dd/mm/yyyy Dates in URLs?

Conversion des dates dans les URL de jj/mm/aaaa en AAAA-MM-JJ

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.

Problème avec strtotime()

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.

Solution utilisant DateTime::createFromFormat()

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>
Copier après la connexion

En utilisant DateTime::createFromFormat(), vous pouvez convertir avec précision la date de l'URL au format AAAA-MM-JJ.

Considérations supplémentaires

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal