在Web开发中我们经常会需要开发一些和日历相关的应用,自然需要制作一些日历程序,一些大家伙比如C#,JAVA或是VB.NET这些语言以往都有不少文章和示例介绍了,所以今天我给大家说一下其他常见Web脚步语言中的日历算法逻辑和具体的实现方式,希望对大家有用。

先看看我们的实现目标,就是在网页中通过脚本语言实现如下的日历:

 各种Web脚本下,日历的实现方法

要实现日历就必须用到相关语言中的日期和时间函数,其中最重要的是具有下面功能的两个函数:

  • 能返回指定日期是星期几的函数
  • 能返回指定年份和月份一共有多少天的函数,或者可以返回指定两个日期之间相差多少天的函数

只要语言中具有上面两个功能的函数就可以轻松实现日历。

实现日历的算法逻辑大致如下:

  1. 取得当前要显示的月份的1号是在星期几
  2. 取得当前要显示的月份一共有多少天
  3. 通过HTML的方式生成一个HTML的表格来显示日历(每行显示一周,并根据需要来决定是生成5行还是6行的表格)
  4. 根据显示的月份1号所在星期几空出前面的不属于该月日期的表格单元格
  5. 根据显示的月份1号所在星期几来决定生成表格时从星期几开始生成日历显示(第一天在星期几)
  6. 根据一共有多少天来顺次生成指定天数,另外每生成七个单元格需要加入一个表格的换行
  7. 补足HTML表格空缺的单元格

剩下的就是根据不同语言中具体的函数来实现了:

下面是根据上述算法和逻辑在asp中的具体实现代码:

 

 

 1各种Web脚本下,日历的实现方法<style>
 2各种Web脚本下,日历的实现方法td { font-family: "宋体"; font-size:9pt}
 3各种Web脚本下,日历的实现方法</style>
 4各种Web脚本下,日历的实现方法<body bgcolor="eeeeee">
 5各种Web脚本下,日历的实现方法<table width="180" cellpadding="0" cellspacing="1" bgcolor="dddddd" align=center>
 6各种Web脚本下,日历的实现方法<%
 7各种Web脚本下,日历的实现方法'以下为ASP中通过该日历算法实现的具体代码
 8各种Web脚本下,日历的实现方法
 9各种Web脚本下,日历的实现方法    '先判断是否指定了一个年份和月份,没有则根据当前的年和月份显示
10各种Web脚本下,日历的实现方法    If Request("ReqDate")="" then
11各种Web脚本下,日历的实现方法         CurrentDate=Date
12各种Web脚本下,日历的实现方法    else
13各种Web脚本下,日历的实现方法         CurrentDate=Trim(Request("ReqDate"))
14各种Web脚本下,日历的实现方法    end if 
15各种Web脚本下,日历的实现方法    pyear=year(CurrentDate)
16各种Web脚本下,日历的实现方法    pmonth=month(CurrentDate)
17各种Web脚本下,日历的实现方法
18各种Web脚本下,日历的实现方法    '以下的代码生成日历显示的表格头内容
19各种Web脚本下,日历的实现方法%>
20各种Web脚本下,日历的实现方法  <tr align="LEFT" bgcolor="#dddddd"> 
21各种Web脚本下,日历的实现方法    <td width="14%" height="19" align="center">
22各种Web脚本下,日历的实现方法        <input type="button" value="<<" onclick="JavaScript:location.href='?ReqDate=<%=DateAdd("m",-1,CurrentDate) %>'">
23各种Web脚本下,日历的实现方法    </td>
24各种Web脚本下,日历的实现方法    <td colspan="5" align="center">
25各种Web脚本下,日历的实现方法        <%=pyear%><%=pmonth%>
26各种Web脚本下,日历的实现方法    </td>
27各种Web脚本下,日历的实现方法    <td width="14%" align="center">
28各种Web脚本下,日历的实现方法        <input type="button" value=">>" onclick="JavaScript:location.href='?ReqDate=<%=DateAdd("m",1,CurrentDate)%>'">
29各种Web脚本下,日历的实现方法    </td>
30各种Web脚本下,日历的实现方法  </tr>
31各种Web脚本下,日历的实现方法  <tr align="center" bgcolor="#CCCCCC"> 
32各种Web脚本下,日历的实现方法    <td width="14%" height="19"> 日</td>
33各种Web脚本下,日历的实现方法    <td width="14%"> 一</td>
34各种Web脚本下,日历的实现方法    <td width="14%"> 二</td>
35各种Web脚本下,日历的实现方法    <td width="14%"> 三</td>
36各种Web脚本下,日历的实现方法    <td width="14%"> 四</td>
37各种Web脚本下,日历的实现方法    <td width="14%"> 五</td>
38各种Web脚本下,日历的实现方法    <td width="14%"> 六</td>
39各种Web脚本下,日历的实现方法  </tr>
40各种Web脚本下,日历的实现方法  <tr align=center bgcolor=ffffff height=19>
41各种Web脚本下,日历的实现方法  <%
42各种Web脚本下,日历的实现方法  '由于ASP中没有获取指定月共有多少天的函数,因此我们需要通过其他算法来获得,算法其实很简单,就是计算一下要显示月份的1日至下个月的1日一共相差几天
43各种Web脚本下,日历的实现方法    fromDate = FormatDateTime(month(CurrentDate) & "/1/" &  year(CurrentDate)) 
44各种Web脚本下,日历的实现方法    toDate = FormatDateTime(DateAdd("m",1,fromDate)) 
45各种Web脚本下,日历的实现方法    '获得要显示月份的第一天为周几
46各种Web脚本下,日历的实现方法    nunmonthstart=weekday(fromDate)-1
47各种Web脚本下,日历的实现方法    '获得要显示的1日至下个月的1日一共相差几天(月份一共有多少天)
48各种Web脚本下,日历的实现方法    nunmonthend=DateDiff("d",fromDate,toDate)
49各种Web脚本下,日历的实现方法    '判断显示日历需要用几行表格来显示(每行显示7天)
50各种Web脚本下,日历的实现方法    if nunmonthstart+nunmonthend<36 then
51各种Web脚本下,日历的实现方法         maxi=36
52各种Web脚本下,日历的实现方法    else
53各种Web脚本下,日历的实现方法         maxi=43
54各种Web脚本下,日历的实现方法    end if
55各种Web脚本下,日历的实现方法    '循环生成表格并显示
56各种Web脚本下,日历的实现方法    i=1
57各种Web脚本下,日历的实现方法    do while i<maxi
58各种Web脚本下,日历的实现方法        iv=i-nunmonthstart
59各种Web脚本下,日历的实现方法        if i>nunmonthstart and i<=nunmonthend+nunmonthstart then
60各种Web脚本下,日历的实现方法            '如果为显示的是今天则用红色背景显示
61各种Web脚本下,日历的实现方法            if iv=Day(nowand month(now)=pmonth and year(now)=pyear then
62各种Web脚本下,日历的实现方法                response.write( "<td align=center bgcolor=ffaaaa><a href='#' target=_blank>" & iv & "</a></td>")
63各种Web脚本下,日历的实现方法            else
64各种Web脚本下,日历的实现方法                response.write( "<td align=center><a href='#' target=_blank>" & iv & "</a></td>")
65各种Web脚本下,日历的实现方法            end if
66各种Web脚本下,日历的实现方法        else
67各种Web脚本下,日历的实现方法            response.write( "<td> </td>")
68各种Web脚本下,日历的实现方法        end if
69各种Web脚本下,日历的实现方法
70各种Web脚本下,日历的实现方法        '如果能被7整除(每行显示7个)则输出一个换行
71各种Web脚本下,日历的实现方法        if i mod 7=0 then
72各种Web脚本下,日历的实现方法            response.write( "</tr><tr align=center bgcolor=ffffff height=19>")
73各种Web脚本下,日历的实现方法        end if
74各种Web脚本下,日历的实现方法        i=i+1
75各种Web脚本下,日历的实现方法    loop
76各种Web脚本下,日历的实现方法%>
77各种Web脚本下,日历的实现方法</table>
78各种Web脚本下,日历的实现方法</body>


具体实现效果如下:

各种Web脚本下,日历的实现方法

下面是根据上述算法和逻辑在PHP中的具体实现代码:

 1各种Web脚本下,日历的实现方法<style>
 2>


具体实现效果如下:
各种Web脚本下,日历的实现方法

下面是根据上述算法和逻辑在NoahWeb中的具体实现代码(一种面象动作驱动的语言):

 1>



具体实现效果如下:
各种Web脚本下,日历的实现方法

源码下载:https://files.cnblogs.com/Aiasted/c.rar

相关文章:

  • 2022-02-28
  • 2021-09-06
  • 2022-12-23
  • 2021-12-18
  • 2021-07-29
  • 2021-09-08
  • 2021-06-13
  • 2021-11-12
猜你喜欢
  • 2021-10-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-26
  • 2021-09-25
  • 2022-12-23
相关资源
相似解决方案