Creare un calendario con Classic ASP

di Daniele Bochicchio, in Classic ASP, Date,

ASP.NET ha un oggetto Calendar molto potente, che permette con molta semplicità l'inserimento di un calendario.
Con ASP, come per tanti altri ambiti, ci tocca scrivere un po' di codice, ma alla fine con un po' di sforzo è possibile arrivare allo stesso identico risultato visivo.
Questo calendar dunque sfrutta gli stessi principi e mostra a video un calendario completo, a prescindere dal mese, con i link per passare al mese precendente piuttosto che a quello successivo.

<%
Session.LCID = 1040

' se non passiamo nessun valore parte dalla data odierna
If Request("data") ="" then
  data = Date()
else
  data = CDate(Request("data"))
end if

mese = Month(data)
anno = Year(data)

' conta il numero di giorni in un mese
function giornidelmese(mese, anno)
  DataInizio = CDate("01/" & mese & "/" & anno)
  DataFine = DateAdd("m", 1, DataInizio)
  giornidelmese = DateDiff("d", DataInizio, DataFine)
end function

%>
<table border="1" cellpadding="0" cellspacing="0" bordercolor=red width="300">
<tr>
<td><a href="calendar.asp?data=<%=DateAdd("m", -1, data)%>"><</td>
<td colspan="5" align="center"><%=MonthName(Month(data)) & " " & Year(data)%></td>
<td align="right"><a href="calendar.asp?data=<%=DateAdd("m", 1, data)%>">></td>
</tr>
<tr bgcolor="#C0C0C0"><td>D</td><td>L</td><td>M</td><td>M</td>
<td>G</td><td>V</td><td>S</td></tr>
<%
DataInizio = CDate("01/" & mese & "/" & anno)

' saltiamo primi giorni della settimana
for i = 1 to WeekDay(DataInizio)-1
  if i = 1 then Response.Write "<tr>"
  Response.write "<td bgcolor=gray> </td>"
next

'mostriamo il calendario
for i = 1 to giornidelmese(mese,anno)
  data = Cdate(( i & "/" & mese & "/" & anno))
  if WeekDay(data) = 1 then Response.Write "<tr>"
  Response.Write("<td align=""center"">" & i & "</td>")
  if WeekDay(data) = 7 then Response.Write "</tr>"
next

' saltiamo primi giorni della settimana
for j = WeekDay(Data)+1 to 7
  Response.write "<td bgcolor=gray> </td>"
  if j mod 7 = 0 then Response.Write "</tr>" : exit for
next

%>
</table>

Con qualche piccolo ritocco è possibile rendere cliccabili anche i singoli giorni per usarlo proprio come quello di ASP.NET.

Per vedere all'opera questo script:
https://www.aspitalia.com/liste/usag/esempi.aspx?ID=559

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi