Mysql
 sql >> Base de données >  >> RDS >> Mysql

Date dans une URL jj/mm/aaaa

Lors de l'utilisation de strotime() vous devez vous assurer que vous utilisez un format datetime valide . Sinon strtotime() renverra false ou vous donner une valeur inattendue.

Les dates qui utilisent le format XX/XX/XXXX sont supposées être au format américain, ce qui signifie que les deux premiers chiffres représentent le mois, les deux chiffres suivants représentent le jour du mois et les quatre derniers chiffres représentent l'année. Lorsque des tirets sont utilisés, les dates sont supposées être au format européen. Par exemple :

04/18/2017 = April 18, 2017
12/18/2017 = December 18, 2017
18-04-2017 = April 18, 2017
18-12-2017 = December 18, 2017

Si vous changez accidentellement le jour et le mois strtotime() renverra faux car la date n'est pas valide.

18/04/2017 // error
18/12/2017 // error
04-18-2018 // error
12-18-2017 // error

Les exemples ci-dessus sont simples. Mais vous pouvez rencontrer des problèmes lorsque les dates peuvent être ambiguës. Par exemple :

04/12/2017 = April 12, 2017
12/04/2017 = December 4, 2017
04-12-2017 = December 4, 2017
12-04-2017 = April 12, 2017

Dans les exemples ci-dessus, en changeant le jour et le mois, nous obtenons toujours des dates valides qui peuvent entraîner des résultats inattendus dans votre application. Pour résoudre ces problèmes potentiels, il est recommandé d'utiliser DateTime::createFromFormat() pour analyser la date et renvoyer un DateTime() objet à partir duquel vous pouvez obtenir un horodatage Unix , convertir la date dans un autre format , ou utilisez-le pour comparer avec d'autres DateTime objets.

// Parse US date format
$date1 = DateTime::createFromFormat('m/d/Y', '04/18/2017');

// Get Unix timestamp of 1493581268
$timestamp = $date1->getTimestamp();

// Parse European date format
$date2 = DateTime::createFromFormat('d-m-Y', ''18-04-2017);

// Get MySQL format (ISO-8601) of 2017-04-18
$mysqlDate = $date2->format('Y-m-d');

Voir aussi :

Pour votre cas spécifique, le code suivant fonctionnera :

$date = $date1 = DateTime::createFromFormat('m/d/Y', '20/02/2000');
$D->query = $date->format('Y-m-d'); // 2000-02-20