練習乙個日曆例子,輸出乙個日曆,顯示當前日期為紅色

2021-09-17 02:41:26 字數 2125 閱讀 4008

練習乙個日曆例子,輸出乙個日曆,顯示當前日期為紅色

主要的理解和掌握點是:

使用date()函式

根據天數計算日曆的長度,主要是行,因為列是固定的,一周只有7天

根據天數計算各天放置的單元格位置

每月第一天的特殊處理

很多時候是從索引0開始計算,例如0-11代表12個月之類

乙個包括12個月的天數的陣列

效果圖:

日    一    二    三    四    五    六

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 31

**:

function is_leap(year)  //是否為閏年

var nstr = new date(); //當前date資訊

var ynow = nstr.getfullyear(); //年份

var mnow = nstr.getmonth(); //月份

var dnow = nstr.getdate(); //今日日期

var n1str = new date(ynow, mnow, 1); //傳入獲取到的年月,並且日設定為1,獲取當月的第一天的日期資訊

var firstday = n1str.getday(); //當月第一天星期幾

var m_days = new array(31, 28 + is_leap(ynow), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); //各月份的總天數

//月份天數+第一天星期幾 除以7,獲取整數行數,然後取整,得到**所需要行數,即這個月的天數需要排多少行

var tr_str = math.ceil((m_days[mnow] + firstday) / 7);

//列印**第一行(有星期標誌)(表頭)

document.write("日一二

三四五六

"); //舉例是2023年12月,有31天

for (var i = 0; i < tr_str; i++)

document.write(""); //**的行結束

}document.write(""); //**結束

這裡有幾個重點:

math.ceil((m_days[mnow] + firstday) / 7)

a: 將當月的日數和1號左邊的空白格相加是因為第一天可能會排在其他空格裡面,所以要把第一天左邊的空格的數量也加上,

這樣才符合日曆的設計,除以7是因為乙個星期只有7天,然後進行取整,例如將4.5行取整為5行

idx = i * 7 + k;

a: 這是作為日曆的每乙個格的編號用的,因為如果不這樣使用的話,沒辦法將第一行輸出0-6,

然後第二行輸出7-13,然後第三行14-20......所以這裡需要用 i*7 +k 來實現這個格式

date_str = idx - firstday + 1;

a: firstday是獲取當月的第一天的週幾,用日曆的每乙個格的編號來減去 firstday 的話,可以確定每乙個格的日期,

日    一    二    三    四    五    六

-4 -3 -2 -1 0 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

但是考慮到沒有0的開始日期,所以需要額外加一

所以,(date_str <= 0 || date_str > m_days[mnow])這個判斷就是為了過濾負數和超過31的日期

乙個日曆程式

year currentdate 年 month currentdate 月 hiddenid getusername 3 日一 二三四五 六 ym year currentdate month currentdate i 1do while i 33 j 1response.write do wh...

乙個日曆C程式

由於c語言當初沒學好,像c的結構體,檔案流,指標等都還弄不明白。下面是最近的乙個 關於列印日曆的。calendar 列印出某年的日曆,由使用者指出1月1日是星期幾以及該年是否為閏年。表示1月1日是星期幾的編碼 0 sunday 1 monday 2 tuesday 3 wednesday 4 thu...

乙個日曆小程式

include define sunday 0 define monday 1 define tuesday 2 define wednesday 3 define thursday 4 define friday 5 define saturday 6 void giveinstructions ...