In questo post presenterò il codice ASP che ci permette di verificare se un anno è bisestile o no.
Lo script è composto da una funzione principale, cuore del calcolo, e da un "blocco if" con il quale si intercetta la risposta.
E' utile fare in questo modo ( e non con una sola semplice funzione) per poter verificare anche se sono avvenuti errori nel calcolo.
Il codice è il seguente:
Se siete sicuri di passare alla funzione un parametro corretto, ossia un numero corrispondente ad un anno (maggiore di 0 e positivo) o una data in un formato corretto allora potete semplificare il "blocco if" in questo modo:
Spero di essere stato chiaro! Se volete scaricare lo script questo è il link.
Nello script dello Zip non è presente il secondo blocco if, quello semplice.
Se avete domande, critiche e/o suggerimenti o semplicemente volete delucidazioni non esitate a contattarmi
Alla prossima!
Aggiornamento:
Quella mostrata sopra è una "funzione didattica" :D . aggiorno questo post per metterne un'altra molto meno complessa che fa la stessa cosa. La funzione è questa:
Attenzione però che in quest'ultima funzione non ho messo un controllo errori quindi devi essere sicuro di passare come valore un anno o una data!
Il resto è uguale. La funzione restituisce il valore booleano true se l'anno è bisestile o false se non lo è.
Nello zippo sopra lincato NON è inclusa quest'ultima funzione!
Lo script è composto da una funzione principale, cuore del calcolo, e da un "blocco if" con il quale si intercetta la risposta.
E' utile fare in questo modo ( e non con una sola semplice funzione) per poter verificare anche se sono avvenuti errori nel calcolo.
Il codice è il seguente:
<%
Function annobisestile(data_num)
on error resume next
if not(isempty(data_num) or isnull(data_num) or len(trim(data_num))=0) then 'se c'è un parametro
if err<>0 then annobisestile=vbnull
if isnumeric(data_num) then 'se è un anno
if data_num<>0 then 'se è diverso da zero
anno=abs(data_num) 'anni negativi vengono considerati positivi
end if
elseif isdate(data_num) then' se è una data
anno=year(data_num) 'estrapolo l'anno
else 'se non è né una data né un anno
annobisestile=vbNull
end if
if err<>0 then annobisestile=vbnull
'/***********************************************************************************/
'/ Un anno è bisestile se è divisible per 4 ma NON per 100. Però è bisestile */
'/ se è divisibile per 400 */
'/***********************************************************************************/
'controllo se è bisestile
if ( ( ( anno mod 4 = 0) and ( anno mod 100 <> 0 ) ) or ( anno mod 400 = 0) )then
annobisestile=true
else
annobisestile=false
end if
if err<>0 then annobisestile=vbnull
else 'se non c'è nessun parametro
annobisestile=vbNull
end if
end function
strtest=2007
if annobisestile(strtest)=true then
'qua il codice che volete se l'anno è bisestile
elseif annobisestile(strtest)=vbnull then
'qua il codice che volete se c'è stato un errore
' o non è stato passato un parametro corretto
else
'qua il codice che volete se l'anno NON è bisestile
end if
%>
Se siete sicuri di passare alla funzione un parametro corretto, ossia un numero corrispondente ad un anno (maggiore di 0 e positivo) o una data in un formato corretto allora potete semplificare il "blocco if" in questo modo:
strtest=2007
if annobisestile(strtest) then
'qua il codice che volete se l'anno è bisestile
else
'qua il codice che volete se l'anno NON è bisestile
end if
Spero di essere stato chiaro! Se volete scaricare lo script questo è il link.
Nello script dello Zip non è presente il secondo blocco if, quello semplice.
Se avete domande, critiche e/o suggerimenti o semplicemente volete delucidazioni non esitate a contattarmi
Alla prossima!
Aggiornamento:
Quella mostrata sopra è una "funzione didattica" :D . aggiorno questo post per metterne un'altra molto meno complessa che fa la stessa cosa. La funzione è questa:
<%
function
annobisestile
(anno)
dim miadata
if isdate(anno) then
miadata="28/02/" & year(anno)
else
miadata="28/02/" & anno
end if
miadata=dateadd("d",1,miadata)
if day(miadata)=29 then
annobisestile
=true
else
annobisestile
=false
end if
end function
%>
Attenzione però che in quest'ultima funzione non ho messo un controllo errori quindi devi essere sicuro di passare come valore un anno o una data!
Il resto è uguale. La funzione restituisce il valore booleano true se l'anno è bisestile o false se non lo è.
Nello zippo sopra lincato NON è inclusa quest'ultima funzione!
Nessun commento:
Posta un commento