189 messaggi dal 26 marzo 2001
Nel creare un calendario mensile mi sono imbattuto nel problema di come riuscire a risolvere il problema degli anni bisestili. Per ora la mia bozza è la seguente:

...
'Conto i giorni del mese
GiorniMese = objRS.RecordCount
If Year(Date) <> 2004 And NMese = "Febbraio" Then
GiorniMese = objRS.RecordCount-1
End If
'Creo le celle della tabella
For i= 1 to GiorniMese
...

Provando a inserire Year(Date) <> (2004 Or 2008) già mi dà errore.
Come potrei risolvere?
Avevo anche pensato che potrei dire:
se la data è divisibile per 4 allora è bisestile, ma come fare? E comunque non è del tutto corretto dato che i secoli (pur essendo divisibili per 4) non lo sono mentre i millenni (come il 2000) sì. Ma questo penso proprio che non interessi. Nessuno userà mai questo calendario nel 3000...
Grazie per una risposta.

Enrico M.B.
512 messaggi dal 30 maggio 2002
Prova questo:

<%
vData = "01/01/2003"
for vAnno = year(vData) to year(vData)+1
response.write "<b>" & year(vData) & "</b><br>"
for vMese = 1 to 12
for vGiorni = 1 to dateDiff("d",vData,dateAdd("m",1,vData))
response.write(vGiorni) & "<br>"
next
response.write "<br>"
vData = dateAdd("m",1,vData)
next
next
%>

se sapessero cosa penso sarei già morto...
La soluzione proposta da pegaso è interessante perché usa la gestione nativa delle date (sinceramente non l'ho provata).

Personalmente ho affrontato la questione in modo un po' diverso, ovvero partendo dalla definizione di anno bisestile:
1) un anno è bisestile se divisibile per 4
2) e se non è divisibile per 100 (il 1900 non è stato bisestile)
3) salvo che, se divisibile per 4 e 100, lo sia anche per 400 (il 2000 è stato bisestile come ricorderete dal clamore suscitato dal millennium bug!)
Da cui si ricava una semplice funzione per determinare se un anno è bisistile (leap) o no; di seguito posto il codice javascript e, se usi VBScript.... non ti resta che fare una semplice traduzione :-)

function isLeapYear (year)
{
return ((year % 4 == 0 && year % 100 != 0) || ((year % 4 == 0 && year % 100 == 0) && (year % 400 == 0)));
}

Matteo Casati
GURU4.net

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.