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

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

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.