中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)絡(luò)編程 > 多種Web腳本語言下的日歷實(shí)現(xiàn)
手把手教你用ASP制作留言本 回到列表 4天學(xué)會(huì) NoahWeb 表單
 多種Web腳本語言下的日歷實(shí)現(xiàn)

作者:jasoncode 時(shí)間: 2005-08-01 文檔類型:原創(chuàng) 來自:藍(lán)色理想

在Web開發(fā)中我們經(jīng)常會(huì)需要開發(fā)一些和日歷相關(guān)的應(yīng)用,自然需要制作一些日歷程序,一些大家伙比如C#,JAVA或是VB.NET這些語言以往都有不少文章和示例介紹了,所以今天我給大家說一下其他常見Web腳步語言中的日歷算法邏輯和具體的實(shí)現(xiàn)方式,希望對(duì)大家有用。

先看看我們的實(shí)現(xiàn)目標(biāo),就是在網(wǎng)頁中通過腳本語言實(shí)現(xiàn)如下的日歷:

要實(shí)現(xiàn)日歷就必須用到相關(guān)語言中的日期和時(shí)間函數(shù),其中最重要的是具有下面功能的兩個(gè)函數(shù):

  • 能返回指定日期是星期幾的函數(shù)
  • 能返回指定年份和月份一共有多少天的函數(shù),或者可以返回指定兩個(gè)日期之間相差多少天的函數(shù)

只要語言中具有上面兩個(gè)功能的函數(shù)就可以輕松實(shí)現(xiàn)日歷。

實(shí)現(xiàn)日歷的算法邏輯大致如下:

  1. 取得當(dāng)前要顯示的月份的1號(hào)是在星期幾
  2. 取得當(dāng)前要顯示的月份一共有多少天
  3. 通過HTML的方式生成一個(gè)HTML的表格來顯示日歷(每行顯示一周,并根據(jù)需要來決定是生成5行還是6行的表格)
  4. 根據(jù)顯示的月份1號(hào)所在星期幾空出前面的不屬于該月日期的表格單元格
  5. 根據(jù)顯示的月份1號(hào)所在星期幾來決定生成表格時(shí)從星期幾開始生成日歷顯示(第一天在星期幾)
  6. 根據(jù)一共有多少天來順次生成指定天數(shù),另外每生成七個(gè)單元格需要加入一個(gè)表格的換行
  7. 補(bǔ)足HTML表格空缺的單元格

剩下的就是根據(jù)不同語言中具體的函數(shù)來實(shí)現(xiàn)了:

下面是根據(jù)上述算法和邏輯在asp中的具體實(shí)現(xiàn)代碼:

 1<style>
 2td { font-family: "宋體"; font-size:9pt}
 3</style>
 4<body bgcolor="eeeeee">
 5<table width="180" cellpadding="0" cellspacing="1" bgcolor="dddddd" align=center>
 6<%
 7'以下為ASP中通過該日歷算法實(shí)現(xiàn)的具體代碼
 8
 9    '先判斷是否指定了一個(gè)年份和月份,沒有則根據(jù)當(dāng)前的年和月份顯示
10    If Request("ReqDate")="" then
11         CurrentDate=Date
12    else
13         CurrentDate=Trim(Request("ReqDate"))
14    end if 
15    pyear=year(CurrentDate)
16    pmonth=month(CurrentDate)
17
18    '以下的代碼生成日歷顯示的表格頭內(nèi)容
19%>
20  <tr align="LEFT" bgcolor="#dddddd"> 
21    <td width="14%" height="19" align="center">
22        <input type="button" value="<<" onclick="JavaScript:location.href='?ReqDate=<%=DateAdd("m",-1,CurrentDate) %>'">
23    </td>
24    <td colspan="5" align="center">
25        <%=pyear%><%=pmonth%>
26    </td>
27    <td width="14%" align="center">
28        <input type="button" value=">>" onclick="JavaScript:location.href='?ReqDate=<%=DateAdd("m",1,CurrentDate)%>'">
29    </td>
30  </tr>
31  <tr align="center" bgcolor="#CCCCCC"> 
32    <td width="14%" height="19"> 日</td>
33    <td width="14%"> 一</td>
34    <td width="14%"> 二</td>
35    <td width="14%"> 三</td>
36    <td width="14%"> 四</td>
37    <td width="14%"> 五</td>
38    <td width="14%"> 六</td>
39  </tr>
40  <tr align=center bgcolor=ffffff height=19>
41  <%
42  '由于ASP中沒有獲取指定月共有多少天的函數(shù),因此我們需要通過其他算法來獲得,算法其實(shí)很簡單,就是計(jì)算一下要顯示月份的1日至下個(gè)月的1日一共相差幾天
43    fromDate = FormatDateTime(month(CurrentDate) & "/1/" &  year(CurrentDate)) 
44    toDate = FormatDateTime(DateAdd("m",1,fromDate)) 
45    '獲得要顯示月份的第一天為周幾
46    nunmonthstart=weekday(fromDate)-1
47    '獲得要顯示的1日至下個(gè)月的1日一共相差幾天(月份一共有多少天)
48    nunmonthend=DateDiff("d",fromDate,toDate)
49    '判斷顯示日歷需要用幾行表格來顯示(每行顯示7天)
50    if nunmonthstart+nunmonthend<36 then
51         maxi=36
52    else
53         maxi=43
54    end if
55    '循環(huán)生成表格并顯示
56    i=1
57    do while i<maxi
58        iv=i-nunmonthstart
59        if i>nunmonthstart and i<=nunmonthend+nunmonthstart then
60            '如果為顯示的是今天則用紅色背景顯示
61            if iv=Day(nowand month(now)=pmonth and year(now)=pyear then
62                response.write( "<td align=center bgcolor=ffaaaa><a href='#' target=_blank>" & iv & "</a></td>")
63            else
64                response.write( "<td align=center><a href='#' target=_blank>" & iv & "</a></td>")
65            end if
66        else
67            response.write( "<td> </td>")
68        end if
69
70        '如果能被7整除(每行顯示7個(gè))則輸出一個(gè)換行
71        if i mod 7=0 then
72            response.write( "</tr><tr align=center bgcolor=ffffff height=19>")
73        end if
74        i=i+1
75    loop
76%>
77</table>
78</body>

具體實(shí)現(xiàn)效果如下:

 

 

下面是根據(jù)上述算法和邏輯在PHP中的具體實(shí)現(xiàn)代碼:

 1<style>
 2td { font-family: "宋體"; font-size:9pt}
 3</style>
 4<body bgcolor="eeeeee">
 5<table width="180" cellpadding="0" cellspacing="1" bgcolor="dddddd" align=center>
 6<?
 7//以下為PHP中通過該日歷算法實(shí)現(xiàn)的具體代碼
 8
 9    //先判斷是否指定了一個(gè)年份和月份,沒有則根據(jù)當(dāng)前的年和月份顯示
10    if($ReqDate==""){
11        $pyear=date("Y");
12        $pmonth=date("m");
13        $CurrentDate=date("Y-m-j");
14    }
else{
15        $ReqDateStrs = explode("-",$ReqDate );
16        $pyear=$ReqDateStrs[0];
17        $pmonth=$ReqDateStrs[1];
18        $CurrentDate=$ReqDate;
19    }

20
21//以下的代碼生成日歷顯示的表格頭內(nèi)容
22?>
23<tr align="center" bgcolor="#dddddd"> 
24    <td width="14%" height="19" align="center">
25        <input type="button" value="<<" onclick="JavaScript:location.href='?ReqDate=<? echo date("Y-m-j",mktime(0,0,0,$pmonth-1,1,$pyear)); ?>'">
26    </td>
27    <td colspan="5" align="center">
28        <? echo $CurrentDate; ?>
29    </td>
30    <td width="14%" align="center">
31        <input type="button" value=">>" onclick="JavaScript:location.href='?ReqDate=<? echo date("Y-m-j",mktime(0,0,0,$pmonth+1,1,$pyear)); ?>'">
32    </td>
33  </tr>
34  <tr align="center" bgcolor="#CCCCCC"> 
35    <td width="14%" height="19"> 日</td>
36    <td width="14%"> 一</td>
37    <td width="14%"> 二</td>
38    <td width="14%"> 三</td>
39    <td width="14%"> 四</td>
40    <td width="14%"> 五</td>
41    <td width="14%"> 六</td>
42  </tr>
43  <tr align=center bgcolor=ffffff height=19>
44<?
45    //獲得要顯示月份的第一天為周幾
46    $nunmonthstart=date('w',mktime(0,0,0,$pmonth,1,$pyear));
47    //獲得要顯示月份一共有多少天
48    $nunmonthend=date('t',mktime(0,0,0,$pmonth,1,$pyear));
49    //判斷顯示日歷需要用幾行表格來顯示(每行顯示7天)
50    if($nunmonthstart+$nunmonthend<36){
51        $maxi=36;
52    }

53    else{
54        $maxi=43;
55    }

56    //循環(huán)生成表格并顯示
57    for( $i=1; $i <$maxi; $i++)
58    {
59        $iv=$i-$nunmonthstart;
60        if($i>$nunmonthstart && $i<=$nunmonthend+$nunmonthstart) {
61            //如果為顯示的是今天則用紅色背景顯示
62            if($iv==date("d"&& date("n")==$pmonth && date("Y")==$pyear){
63                print( "<td align=center bgcolor=ffaaaa><a href='#' target=_blank>".$iv."</a></td>" );
64            }
else{
65                print( "<td align=center><a href='#' target=_blank>".$iv."</a></td>" );
66            }

67        }
else{
68            print( "<td> </td>" ); 
69        }

70
71        //如果能被7整除(每行顯示7個(gè))則輸出一個(gè)換行
72        if ($i%7 ==0{
73            print( "</tr><tr align=center bgcolor=ffffff height=19>" );
74        }

75    }

76?>
77</tr>
78</table>
79</body>
80</html>

具體實(shí)現(xiàn)效果如下:

 

下面是根據(jù)上述算法和邏輯在NoahWeb中的具體實(shí)現(xiàn)代碼:

 1<%@ Page language="c#" AutoEventWireup="false" Inherits="NoahWeb.Engine" %>
 2<style>
 3td { font-family: "宋體"; font-size:9pt}
 4
</style>
 5<!-- NoahComment 以下為NoahWeb表現(xiàn)層通過該日歷算法實(shí)現(xiàn)的具體代碼 -->
 6
 7<!-- NoahComment 先判斷是否指定了一個(gè)年份和月份,沒有則根據(jù)當(dāng)前的年和月份顯示 -->
 8<!-- NoahIf EX="[_root.ReqDate]==[null]" -->
 9    <!-- NoahSetValue SetName="CurrentDate" SetValue="date('O',mktime())"  -->
10<!-- NoahElse -->
11    <!-- NoahSetValue SetName="CurrentDate" SetValue="[_root.ReqDate]"  -->
12<!-- NoahEndIf -->
13
14<!-- NoahSetValue SetName="pyear" SetValue="date('Y',mktime([CurrentDate]))" -->
15<!-- NoahSetValue SetName="pmonth" SetValue="date('n',mktime([CurrentDate]))" -->
16
17<!-- NoahComment 以下的代碼生成日歷顯示的表格頭內(nèi)容 -->
18<body bgcolor="eeeeee">
19<table width="180" cellpadding="0" cellspacing="1" bgcolor="dddddd" align=center>
20<tr align="LEFT" bgcolor="#dddddd"> 
21    <td width="14%" height="19" align="center">
22        <input type="button" value="<<" onclick="JavaScript:location.href='?ReqDate=<!-- NoahValue ValueName="date('O',totime(mktime([CurrentDate]),0,-1))" -->'">
23    </td>
24    <td colspan="5" align="center">
25        <!-- NoahValue ValueName="[pyear]" --><!-- NoahValue ValueName="[pmonth]" -->
26    </td>
27    <td width="14%" align="center">
28        <input type="button" value=">>" onclick="JavaScript:location.href='?ReqDate=<!-- NoahValue ValueName="date('O',totime(mktime([CurrentDate]),0,1))" -->'">
29    </td>
30  </tr>
31  <tr align="center" bgcolor="#CCCCCC"> 
32    <td width="14%" height="19"> 日</td>
33    <td width="14%"> 一</td>
34    <td width="14%"> 二</td>
35    <td width="14%"> 三</td>
36    <td width="14%"> 四</td>
37    <td width="14%"> 五</td>
38    <td width="14%"> 六</td>
39  </tr><tr bgcolor=ffffff height=19>
40
41<!-- NoahComment 獲得要顯示月份的第一天為周幾 -->
42<!-- NoahSetValue SetName="nunmonthstart" SetValue="date('w',mktime([pyear],[pmonth],1,0,0,0))" -->
43
44<!-- NoahComment 獲得要顯示月份一共有多少天 -->
45<!-- NoahSetValue SetName="nunmonthend" SetValue="date('t',mktime([pyear],[pmonth],1,0,0,0))" -->
46
47<!-- NoahComment 判斷顯示日歷需要用幾行表格來顯示(每行顯示7天) -->
48<!-- NoahIf EX="[nunmonthstart]+[nunmonthend]<36" -->
49    <!-- NoahSetValue SetName="maxi" SetValue="36"  -->
50<!-- NoahElse -->
51    <!-- NoahSetValue SetName="maxi" SetValue="43"  -->
52<!-- NoahEndIf -->
53
54<!-- NoahComment 循環(huán)生成表格并顯示 -->
55<!-- NoahForStart InitVar="i" InitValue="1" EX="[i]<[maxi]" NextVar="i" NextValue="[i]+1" -->
56
57    <!-- NoahSetValue SetName="iv" SetValue="[i]-[nunmonthstart]" -->
58
59    <!-- NoahComment 如果為顯示的是今天則用紅色背景顯示 -->
60    <!-- NoahIf EX="[iv]==date('d',mktime())&&date('n',mktime())==[pmonth]&&date('Y',mktime())==[pyear]" -->
61        <td align="center" bgcolor=ffaaaa>
62    <!-- NoahElse -->
63        <td align="center">
64    <!-- NoahEndIf -->
65
66    <!-- NoahComment 如果是一個(gè)有效的日期則輸出該日期并超鏈接,如果不為一有效日期則不做輸出(由于NoahWeb控制HTML代碼比較方便所以邏輯在這做了一點(diǎn)改變讓我少寫點(diǎn)代碼,哈) -->
67    <!-- NoahIf EX="[i]>[nunmonthstart]&&[i]<=[nunmonthend]+[nunmonthstart]" -->
68        <href='#' target=_blank><!-- NoahValue ValueName="[iv]" --></a>
69    <!-- NoahEndIf --> </td>
70
71    <!-- NoahComment 如果能被7整除(每行顯示7個(gè))則輸出一個(gè)換行 -->
72    <!-- NoahIf EX="[i]%7==0" -->
73        </tr><tr bgcolor=ffffff height=19>
74    <!-- NoahEndIf -->
75
76<!-- NoahForEnd -->
77</tr>
78</table>
79</body>
80</html>

具體實(shí)現(xiàn)效果如下:

全屏查看代碼

請下載示意源代碼

本文鏈接:http://m.95time.cn/tech/program/2005/2585.asp 

出處:藍(lán)色理想
責(zé)任編輯:藍(lán)色

◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論

作者文章 更多作者文章
NoahWeb應(yīng)用——模組資源
NoahWeb應(yīng)用———字符資源
5天玩轉(zhuǎn)NoahWeb邏輯層--第5天
5天玩轉(zhuǎn)NoahWeb邏輯層--第4天
5天玩轉(zhuǎn)NoahWeb邏輯層--第3天
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計(jì)大賽開啟
國際體驗(yàn)設(shè)計(jì)大會(huì)7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會(huì)
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺(tái)歷
Ps簡單繪制一個(gè)可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機(jī)制之一:普通流
25個(gè)最佳最閃亮的Eclipse開發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計(jì)作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評(píng)論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評(píng)論。如果您不是本站會(huì)員,你可以注冊 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評(píng)分 1 2 3 4 5
注意:請不要在評(píng)論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評(píng)論請用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評(píng)論管理人員有權(quán)保留或刪除其管轄評(píng)論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評(píng)論文檔 | 報(bào)告錯(cuò)誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2