Click here to Skip to main content
Click here to Skip to main content

How to build simple HTML Calendar

, 18 Feb 2007
Rate this:
Please Sign up or sign in to vote.
Idea to generate Calendar can be applayed on Win or web apps

'

Screenshot - Calendar.gif

Introduction

This article focus on how to build Dynamic Calendar from scratch in easy steps so we can customize it for any new goal that may be requested in any project.

Background

Some Times telling what day could be task for even smarts one of people, and there is lot of ready tools build to help us with but, may someday someone ask you to build new calendar control from scratch so you I though how we can build one.

Using Code

To build any simple calendar we need to know several things about month we want show its table:

current month number and year number from this two knowns we get number of day's in current month at this year using function Date.DaysInMonth(year, month) after that we generate an instance of date object with passed month and year with day number 1, using another property of Date Object we get current (1 day in month number in first week of that month) currentDate.DayOfWeek() so we can get the offset in weeks array that contain days ordered from (Sun to Sat) so we can know how to represent our day as shown in code below.

Code

Function DrawCalender(ByVal month As Integer, ByVal year As Integer) As String
        'to hold current date of this day for presentation peropse 
        Dim today As Date = New Date(Now.Year, Now.Month, Now.Day)
        'object of passed month and year
        Dim currentDate As Date = New Date(year, CInt(month), 1)
        'array hold days of week
        Dim days() As String = New String() {"Sun", "Mon", "Tu", "Wen", "Thr", "Fri", "Sat"}
        'temp holder to hold week name from array above
        Dim day As String
        'number of days in selected month
        Dim numDays As Integer = Date.DaysInMonth(year, month)
        Dim index, position As Integer        
        Dim returnData As String = ""
        '1st day of month day number
        Dim offset As Integer = currentDate.DayOfWeek()
        'MsgBox(offset)
        returnData = "<table border=""0"" cellpadding=""0"" cellspacing=""0"">"
        returnData &= "<tr>"
        returnData &= "<td colspan=""7"" align=""center"">" & currentDate.Month.ToString() & " / " & currentDate.Year & "</td>"
        returnData &= "</tr>"
        returnData &= "<tr>"
        For Each day In days
            returnData &= "<td align=""center"" width=""26"">" & day & "</td>"
        Next
        returnData &= "</tr>"
        position = 0
        For index = 1 - offset To numDays
            If position Mod 7 = 0 Then
                returnData &= "<tr>"
            End If
            If index < 1 Then
                returnData &= "<td align=""center"">-</td>"
            ElseIf index = today.Day AndAlso year = today.Year AndAlso month = today.Month Then
                returnData &= "<td align=""center""><b>" & (index).ToString() & "</b></td>"
            Else
                returnData &= "<td align=""center"">" & (index).ToString() & "</td>"
            End If
            
            position += 1
            If position Mod 7 = 0 Then returnData &= "</tr>"
        Next
        
        If position Mod 7 <> 0 Then
            For index = 1 To 7 - (position Mod 7)
                returnData &= "<td align=""center"">-</td>"
            Next
            returnData &= "</tr>"
        End If
        returnData &= "</table>"
        Return returnData
    End Function
    Private Function Years() As String()
        Dim str(10) As String
        Dim index As Integer
        For index = 0 To str.Length - 1
            str(index) = Now.Year - str.Length + index + 1
        Next
        Return str
    End Function

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Mohm'ed Melhem
Software Developer (Senior) none
Palestinian Territory (Occupied) Palestinian Territory (Occupied)
No Biography provided

Comments and Discussions

 
-- There are no messages in this forum --
| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.1411022.1 | Last Updated 19 Feb 2007
Article Copyright 2007 by Mohm'ed Melhem
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid