Lavorando con degli scadenziari, può capitare di voler visualizzare
le voci di colori diverso in funzione alla data odierna; nell'esempio che adesso
andremo a vedere, faremo in modo che le attività scadute siano in rosso,
quelle future in verde e quelle odierne in giallo.
Se per fare il confronto tra date si facesse un operazione del tipo
<SCRIPT LANGUAGE=vbscript>
if "5/11/2001"<"20/11/2001" then
document.write "Giusto"
else
document.write "Sbagliato"
end if
</SCRIPT>
ci si aspetterebbe che il risultato fosse "Giusto", invece è
errato. Infatti il confronto non viene effettuato tra date, ma tra strighe:
in ordine alfabetico il 5 viene dopo il 2, quindi il risultato è sbagliato.
L'accorgimento da adottare quando si vogliono fare confronti tra date, è
quello di specificare che i parametri del confronto sono date. Per farlo si
usa CDate
<SCRIPT LANGUAGE=vbscript>
if CDate("5/11/2001")<CDate("20/11/2001") then
document.write "Giusto"
else
document.write "Sbagliato"
end if
</SCRIPT>
Adesso il risultato è giusto.
Il modo migliore per fare confronti fra date, è tramite la funzione DateDiff:
questa funzione restituisce 0 se le date sono uguali, un numero negativo se
è maggiore la prima data e un numero positivo se è maggiore la
seconda data.
<SCRIPT LANGUAGE=vbscript>
if DateDiff("d","5/11/2001","20/11/2001")>0
then
document.write "Giusto"
else
document.write "Sbagliato"
end if
</SCRIPT>
Questa funzione restituisce "Giusto".
Tornando al nostro esercizio, useremo DateDiff per confrontare delle date con
quella odierna. Il risultato del confronto colorerà in modo diverso lo
sfondo di una cella.
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE=vbscript>
if DateDiff("d","5/11/2001","20/11/2001")>0 then
document.write "Giusto"
else
document.write "Sbagliato"
end if
</SCRIPT>
<TABLE width=75% border=1 cellspacing=1 cellpadding=1>
<TR>
<TD id=tab1><input name=data1></TD>
</TR>
<TR>
<TD id=tab2><input name=data2></TD>
</TR>
<TR>
<TD id=tab3><input name=data3></TD>
</TR>
</TABLE>
<input type=button value=Confronta >
<SCRIPT LANGUAGE=vbscript >
<!--
data1.value = DateAdd("d",-5,date())
data2.value = date()
data3.value = DateAdd("d",+6,date())
sub colora()
if DateDiff("d",data1.value,date())>0 then
tab1.bgcolor ="red"
elseif DateDiff("d",data1.value,date())<0 then
tab1.bgcolor ="green"
else
tab1.bgcolor ="yellow"
end if
if DateDiff("d",data2.value,date())>0 then
tab2.bgcolor ="red"
elseif DateDiff("d",data2.value,date())<0 then
tab2.bgcolor ="green"
else
tab2.bgcolor ="yellow"
end if
if DateDiff("d",data3.value,date())>0 then
tab3.bgcolor ="red"
elseif DateDiff("d",data3.value,date())<0 then
tab3.bgcolor ="green"
else
tab3.bgcolor ="yellow"
end if
end sub
//-->
</SCRIPT>
</BODY>
</HTML>