Fonction de vérification de la date et de l'heure

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 998 fois - Téléchargée 20 fois

Contenu du snippet

La date et l'heure intervienne souvent dans divers projets, comme l'usage d'un calendrier par exemple, il est donc interressent de pouvoir vérifier les dates inscrites par les utilisateurs, afin non seulement de vérifier leurs validités mais aussi pourquoi pas les placer au format de date US, c'est-à-dire AAAA-MM-JJ, qui rappelons-le et le format dans lequel les dates doivent être inserée dans un champ de type "Date" d'une base de donnée.

Les deux fonctions que je vous propose ici, permettent, pour la fonction "Verif_Date($Date)" de vérifier la validité d'une date (returne false en cas d'échec) ainsi que, dans le cas d'une date valable, la retourner en format US, prette a etre inserée dans une table. Ce fonction et interresente sur le fait que l'utilisateur ne doit pas respecter un format de date ou un certain type de séparateur entre les chiffres; la fonction adaptera automatiquement la date au bon format

Exemple:
1/1/2007 retournera 2007-01-01
04-2-06 retournera 2006-02-04
08/03/2007 retournera 2007-03-08

La fonction de vérification de l'heure permet, tout comme la fonction Verif_Date, de remetre en place un heure entrée par l'utilisateur, quelque soit le format qu'il aie appliqué, que se soit 14:00 ou 14H00 ou n'importe quel autre séparateur.

Source / Exemple :


function Zero($Num)
	{
		if($Num < 10 && strlen($Num) < 2)
			$Num = '0'.$Num;
		return $Num;
	}
        function Verif_Date($Date)
	{
		$Pos_1 = substr($Date, 2, 1);
		$Pos_2 = substr($Date, 1, 1);
		if (!(is_numeric($Pos_1)))
			$Separateur  = $Pos_1;
		elseif (!(is_numeric($Pos_2)))
			$Separateur  = $Pos_2;
		else
			return false;
		$Tableau = explode($Separateur, $Date);
		$Jour = Zero($Tableau[0]);
		$Mois = Zero($Tableau[1]);		
		if (strlen($Tableau[2]) == 2)
			$Annee = '20'.$Tableau[2];
		elseif (strlen($Tableau[2]) == 4)
			$Annee = $Tableau[2];
		$Date_SQL = $Annee.'-'.$Mois.'-'.$Jour;
		if (checkdate($Mois, $Jour, $Annee))
			return $Date_SQL;
		else
			return false;
	}
	function Verif_Heure($Heure)
	{
		$Pos_1 = substr($Heure, 1, 1);
		$Pos_2 = substr($Heure, 2, 1);
		if (!(is_numeric($Pos_1)))
			$Separateur  = $Pos_1;
		elseif (!(is_numeric($Pos_2)))
			$Separateur  = $Pos_2;
		else
			return false;
		$Tableau = explode($Separateur, $Heure);
		$Heures = Zero($Tableau[0]);
		$Minutes = Zero($Tableau[1]);
		if (is_numeric($Heures) && is_numeric($Minutes))
		{
			if ($Heures < 24 && $Minutes < 60)
				return $Heures.':'.$Minutes;
			else
				return false;
		}
		else
			return false;		
	}

A voir également

Ajouter un commentaire Commentaires
Messages postés
8
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
31 juillet 2007

En effet, c'est aussi une solution possible , beaucoup d'élément dépendent du contexte dans lequel tu utilise ta fonction.

Merci pour ton commentaire.
Messages postés
47
Date d'inscription
jeudi 17 octobre 2002
Statut
Membre
Dernière intervention
24 mars 2007

Bonne idée. Pour être chiant, est-ce qu'il ne serait pas aussi intéressant de vérifier lequel des deux doublet est le mois et lequel est le jour. A partir du moment où un est au dessus de 12 c'est obligatoirement le jour, sinon, il faudrait demander à l'utilisateur. Enfin c'est juste une petite idée !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.