Vérification d'une date avec gestion des années bissextile

Soyez le premier à donner votre avis sur cette source.

Snippet vu 37 107 fois - Téléchargée 29 fois

Contenu du snippet

Ce code permet entre autre de vérifier une date. Il existe des codes similaires sur aspfr, mais elles ne géraient pas les années bissextiles...

Voilà, maintenant que c'est fait, profitez bien de cette source qui peut vous être fort utile :)

Pour l'utiliser la fonction, copiez ce code dans votre page ASP, puis faites-y appel comme ceci:

<%
'Ici, votre date est incorrecte... 2003 n'étant pas une année bissextile
if IsValidDate (2003, 02, 29) = false then
Response.write "Date Incorrecte"
else
Response.Write "Date Correcte"
end if

'En revanche 2004, l'est :)
if IsValidDate (2004, 02, 29) = false then
Response.write "Date Incorecte"
else
Response.Write "Date Correcte"
end if
%>

Source / Exemple :


<%
Function IsValidDate(tsYear, tsMonth, tsDay)
'Fonction permettant de valider une date, avec gestion des années bisextiles 
'---------------------------------------------------------------------
'	Paramètres :
'		tsYear		: Année (nombre entier)
'		tsMonth		: Mois (compris entre 1 et 12 inclus)
'		tsDay		: Jour (compris entre 1 et 31 inclus)
'	Valeurs retournées :
'		True		: La date est valide
'		False		: La date est invalide	
'----------------------------------------------------------------------

	Dim AnneeBisexstile

	IsValidDate =True
	if isnumeric(tsYear) = false or isnumeric(tsMonth) = false or isnumeric(tsDay) = false then
		
		IsValidDate = false
		exit function
	end if

	if tsYear > 2099  then
		IsValidDate = false
		exit function
	end if	
	
	if tsMonth > 12 or tsMonth < 1  then
		IsValidDate = false
		exit function
	end if
	
	if tsDay > 31 or tsDay < 1  then
		IsValidDate = false
		exit function
	end if	
	
	Select case tsMonth
		case 2
		' Le mois de février peut avoir soit 28 jours, soit 29
		' Tout dépend si l'année est bisextile ou pas

		' Merci à garfield90 pour son aide :)
			AnneeBisexstile = 0
			if tsYear mod 4 = 0 then AnneeBisexstile = 1
			if tsYear mod 100 = 0 then AnneeBisexstile = 0
			if tsYear mod 400 = 0 then AnneeBisexstile = 1

			if AnneeBisexstile = 1 then
			'Année bisextile !!
				if tsDay > 29 then
					IsValidDate = false
					exit function
				end if
			else
			'Année non bisextile
				if tsDay > 28 then
					IsValidDate = false
					exit function
				end if
			end if
				
		case 4, 6, 9, 11
			'On a 30 jours dans le mois...
			if tsDay > 30 then
				IsValidDate = false
				exit function
			end if	
		'case else
		'Les tests ont déjà été effectués pour les mois de 31 jours :)
	end select
end function

%>

A voir également

Ajouter un commentaire

Commentaires

cs_garfield90
Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
-
en lisant le source, je crois que t'as pas pris en compte le fait que si une année est divisible par 4 et par 100, l'année n'est pas bisextille
Sinon tu aurais pu aussi passé une date sous ce format (dd-mm-aaaa ou dd/mm/aaaa) plutot que sous le format dd,mm,aaaa pour moi ce serait plus propre
cs_garfield90
Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
-
en fait, je me suis mal exprimer.
est bisextille, les années divisibles par 4 sauf les années divisibles par 100 exception faite des années divisibles par 400
au fait je viens d'y penser la fonction isdate() existe et fonctionne très bien alors pourquoi la recréer????
BinOff
Messages postés
25
Date d'inscription
mardi 24 juillet 2001
Statut
Membre
Dernière intervention
13 décembre 2007
-
à l'orginie, je l'ai créée pour vérifier à partir d'une date de la forme YYYYMMDD indiquée par un utilisateur.

Mon serveur ASP étant américain, lorsque j'ajoutais une date formatée par DateSerial dans ma base de donnée, me l'ajoutait au format américain et non français.

Bref si j'ai fait cette fonction c'est parce que j'avais des problèmes au niveau de la validation de mes dates.

Je vais corriger de suite le code avec tes indications. Merci encore garfield90
Focalizer
Messages postés
76
Date d'inscription
dimanche 19 mai 2002
Statut
Membre
Dernière intervention
8 mai 2006
-
t'as essayé de mettre un Session.LCID = 1036 au début de tes pages ? ca remetra tes date en fr :)
Focalizer
Messages postés
76
Date d'inscription
dimanche 19 mai 2002
Statut
Membre
Dernière intervention
8 mai 2006
-
t'as essayé de mettre un Session.LCID = 1036 au début de tes pages ? ca remetra tes date en fr :)

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.