Problème:

Peut-être que l’utilisateur a entré la date dans le formulaire et que maintenant, vous voulez vérifier s’il est dans le bon format de date avant de traiter les données ou de les insérer dans la base de données.

💡 Solution:

Il y a plusieurs moyens de vérifier un format de date valide. Nous allons nous concentrer essentiellement sur deux d’entre eux.

Méthode 1: En utilisant la fonction date_parse()

Si vous passez un format de date valide à la fonction date_parse (), il retournera un tableau associatif contenant des détails sur la date comme le jour, le mois, l’année, etc.

Une fois rempli, la fonction renvoie des avertissement ou des erreurs comme warning_count et error_count qui deviennent les clés du tableau si la date fournie n’a pas un format de date valide.

<?php
$dtInfo = date_parse("32th June 2014");
if($dtInfo['warning_count'] == 0 && $dtInfo['error_count'] == 0 ){
echo "C'est une date valide.";
}else{
echo "Ce n'est pas une date valide.";
}
?>

➡ Sortie:
Ce n’est pas une date valide.

📢 Notez aussi que la fonction date_parse() accepte les formats de date acceptés par la fonction strtotime(). Checkez la liste des formats de date et d’heure supportés. Donc, si vous utilisez ces formats, la fonction date_parse() retournera true.

Méthode 2: Utiliser la classe DateTime

PHP fournit une excellente richesse de classes prêtes à l’emploi pour aider les développeurs à résoudre des problèmes communs. Pour résoudre les problèmes de date et d’heure, PHP fournit la classe DateTime.

Il existe 2 étapes pour vérifier un format de date valide à l’aide de la classe DateTime:

  • Créez un nouvel objet DateTime en utilisant la méthode createFromFormat() qui vous permet de créer un objet DateTime selon le format que vous avez spécifié dans ses paramètres.
  • Ensuite, utilisez la méthode getLastErrors() pour vérifier s’il y a une erreur ou un avertissement dans l’objet que vous venez de créer.

Dans l’exemple suivant, nous vérifierons si le 31-04-2018 est une date valide. Note: Avril a 30 jours. Donc, ce n’est pas une date valide.

<?php
$date = DateTime::createFromFormat('d-m-Y', '31-04-2018');
$err = $date->getLastErrors();
if($err['warning_count'] == 0 && $err['error_count'] == 0)
echo "Date valide.";
else
echo "Date invalide.";
?>

➡ Sortie:
Date invalide.

 Ligne 2 Ici, nous créons un objet DateTime($date) en utilisant la méthode createFromFormat() avec notre date fournie (’31-04-2018′). Le deuxième paramètre est notre date fournie ainsi que le premier est la représentation du formatage des caractères de notre date fournie.

Pour voir la liste des autres caractères de formatage, vérifiez la liste des caractères de formatage.

 Ligne 3  Si l’objet DateTime($date) que nous avons créé dans la ligne précédente a une erreur ou un avertissement, nous pouvons le retrouver en utilisant la méthode getLastErrors(). Cette méthode retourne un tableau avec toutes les erreurs et les avertissements. Nous nommons ce tableau comme $err.
Ligne 4 Le nombre d’erreurs et d’avertissements est stocké respectivement dans les clés error_count et warning_count du tableau. Ici, nous vérifions si une erreur ou un avertissement existe. S’il n’y a pas d’avertissement ou d’erreur, nous affichons “Date valide” sinon “Date invalide”. Et c’est ce dernier message qui sera affiché si un problème de format est détecté.

📢 Vous pouvez avoir un format de date différent. Dans ce cas, faites correspondre les caractères de formatage dans les premiers arguments de la méthode createFromFormat() avec la date fournie dans le deuxième paramètre.

Exemple:

<?php
$date = DateTime::createFromFormat('jS M Y', '11th Jun 2018');
…
?>

 

#TheGalsenGeek🇸🇳👨🏾‍💻

Partagez cet article: