Soren Winslow Soren Winslow
Simple, Easy and Modifiable Monthly Calendar
This is a simple monthly calendar that allows you to select the month and year then generates the calendar for the year. Because of the way it works and with only a minimal amount of calculations, it makes it very easy to modify or manipulate.
Since the calendar is rendered from a starting date to an ending date, that also simplifies being able to run a query on dates against a database to check for events or schedules.
  Month     Year      
April 2024
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
Here is the ASP code for this script:



  <%



  TheMonth = Request("TheMonth")

  If Len(Trim(TheMonth)) = 0 Then

     TheMonth = Month(Date())

  End If

  TheMonth = Cint(TheMonth)



  TheYear = Request("TheYear")

  If Len(Trim(TheYear)) <> 4 OR IsNumeric(TheYear) = False Then

     TheYear = Year(Date())

  End If



  TheMonths = ",January,Febuary,March,April,May,June" & _

                     ",July,August,September,October,Novemeber,December"

  MonthArr = Split(TheMonths,",")



  TheDays = ",Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday"

  DaysArr = Split(TheDays,",")



  NumDays = 0

  If TheMonth = 2 Then

     NumDays = 28

     If TheYear Mod 4 = 0 Then

        NumDays = 29

     End If

  ElseIf TheMonth <= 7 Then

      If TheMonth Mod 2 = 1 Then

         NumDays = 31

      Else

         NumDays = 30

      End If

  Else

      If TheMonth Mod 2 = 0 Then

         NumDays = 31

      Else

         NumDays = 30

      End If

  End If



  FirstOfMonth = CDate(TheMonth & "/01/" & TheYear)

  FirstDay = Weekday(FirstOfMonth)

  FirstDayName = WeekdayName(FirstDay)

  EndOfMonth = CDate(TheMonth & "/" & NumDays & "/" & TheYear)

  LastDay = Weekday(EndOfMonth)

  StartDate = FirstOfMonth - (FirstDay-1)

  EndDate = EndOfMonth + (7-LastDay)



%>



<form name="SelMonthYear" method="post" action="Calendar.asp">

<table class="DataTble" cellspacing="0" align="center">

<tr class="bnotes" style="font-weight:bold;">

<td>

    &nbsp;

    Month

    <select name="TheMonth" class="bnotes">

        <%

          For x = 1 to UBound(MonthArr)

             If TheMonth = x Then

                 Response.Write "<option value=" & chr(34) & x & chr(34) & " selected>" & _

                                MonthArr(x) & _

                                "</option>" & chr(13)

             Else

                 Response.Write "<option value=" & chr(34) & x & chr(34) & ">" & _

                                MonthArr(x) & _

                                "</option>" & chr(13)

             End If

          Next

        %>

    </select>

    &nbsp;

</td>

<td>

    &nbsp;

    Year

    <input type="text" name="TheYear" class="bnotes" size="3" value="<%=TheYear%>">

    &nbsp;

</td>

<td>

    &nbsp;

    <input type="submit" value="Go" class="SubButton">

    &nbsp;

</td>

</tr>

</table>

</form>



<table class="DataTble" cellspacing="0" align="center">

<tr>

<td class="CalMonth" style="text-align:center;font-size:12pt;" colspan="7">

    <%=MonthArr(TheMonth)%> <%=TheYear%>

</td>

</tr>

<tr>

  <%

    For x = 1 To UBound(DaysArr)

       Response.Write "<td class=" & chr(34) & "CalDayName" & chr(34) & ">" & _

                      DaysArr(x) & _

                      "</td>" & chr(13)

    Next





    For x = StartDate to EndDate



       If x Mod 7 = 1 Then

          Response.Write "<tr class=" & chr(34) & "bnotes" & chr(34) & ">"

       End If



       If x = Date() Then

         TheCellStyle = "IsToday"

       ElseIf x < FirstOfMonth OR x > EndOfMonth Then

         TheCellStyle = "NotMonthDay"

       Else

         TheCellStyle = "IsMonthDay"

       End If

       

       Response.Write "<td class=" & chr(34) & TheCellStyle & chr(34) & ">" & _

                      "<b>" & Day(x) & "</b><br>" & _

                      "</td>"



       If x Mod 7 = 0 Then

          Response.Write "</tr>"

       End If



    Next





  %>

</tr>

</table>

               
© 1967 - 2024 Soren Winslow