65.9K
CodeProject 正在变化。 阅读更多。
Home

如何构建简单的 HTML 日历

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.88/5 (5投票s)

2007年2月19日

3分钟阅读

viewsIcon

44090

日历生成想法可以应用于 Windows 或 Web 应用程序。

'

Screenshot - Calendar.gif

引言

本文重点介绍如何轻松几步从头开始构建动态日历,以便我们可以根据任何项目中可能提出的任何新目标对其进行自定义。

背景

有时,确定某一天是什么日子,即使对于聪明人来说也可能是一项任务,并且有很多现成的工具可以帮助我们,但是,也许有一天有人会要求你从头开始构建新的日历控件,所以我思考了我们该如何构建一个。

使用代码

要构建任何简单的日历,我们需要了解一些关于我们想显示其表格的月份的信息。

当前月份数和年份数,从这两个已知数中,我们使用函数`Date.DaysInMonth(year, month)`获取当年当前月份的天数,然后我们使用传入的月份和年份以及日期号1生成日期对象的实例,使用日期对象的另一个属性,我们得到当前(该月第一周的月份中的第一天)`currentDate.DayOfWeek()`,所以我们可以得到周数组中的偏移量,该数组包含从(周日至周六)排序的天数,所以我们可以知道如何表示我们的日期,如下面的代码所示。

代码

Function DrawCalender(ByVal month As Integer, ByVal year As Integer) As String
'用于保存当天当前日期以进行演示
Dim today As Date = New Date(Now.Year, Now.Month, Now.Day)
'
object 传入的月份和年份
Dim currentDate As Date = New Date(year, CInt(month), 1)
'数组保存一周的天数
Dim days() As String = New String() {"Sun", "Mon", "Tu", "Wen", "Thr", "Fri", "Sat"}
'
临时持有者,用于保存上面数组中的星期名称
Dim day As String
'所选月份的天数
Dim numDays As Integer = Date.DaysInMonth(year, month)
Dim index, position As Integer
Dim returnData As String = ""
'
月份的第一天日期数
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

© . All rights reserved.