先以計算每年的第一天是星期幾為例
原理:1.如果知道公元1年的第1天是星期x,設公元1年的第一天為起始天,那麼計算某年的第一天是星期幾隻需計算出該天是從公元第一天開始數的第幾天(等於與起始天的差值f+1),將其除7,得到的商為相差的週數,用取整後f+1(由於有閏年存在,之後解釋)減去相差週數*7得到s,若公元一年第一天為星期x,s=0則為星期x-1,s=1則為星期x,s=2則為星期x+1,依次遞推
2.閏年有366天,閏年的定義為:凡是年份能夠被4整除、且不能被100整除的是閏年;凡是年份能被400整除的也是閏年;除此以外的年份都不是閏年。
演算法推理過程:
設某年為y,該年第一天與起始天的差值f-1為(y-1)*365再加上y-1與公元1年之間的閏年數(因為閏年比平年多一天),首先能夠被4整除的可能是閏年,總數為(y-1)/4,但被4整除且能被100整除的不是閏年,需減去(y-1)/100(因為被100整除一定能被4整除,這部分多加了),被400整除的是閏年,需加上(y-1)/400(因為被400整除一定能被100整除,這部分多減了)
那麼f=
f=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+1
若其中沒有閏年,後面三項會出現小數,所以應把求得的f取整
那麼
s=int(f)-int(f/7)*7
公元1年第一天為星期一
s=0為星期日
s=1為星期一
…以此類推
計算第n天只需將f最後項的+1改為+n即可
**(按鈕控制項):
private sub button1_click(sender as object, e as eventargs) handles button1.click
dim y, k, s as integer
dim f as double
y = textbox1.text
f = ((y - 1) + (y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400) + 1
k = int(f) - int(f / 7) * 7
select case k
case 0
textbox2.text = "星期日"
case 1
textbox2.text = "星期一"
case 2
textbox2.text = "星期二"
case 3
textbox2.text = "星期三"
case 4
textbox2.text = "星期四"
case 5
textbox2.text = "星期五"
case 6
textbox2.text = "星期六"
end select
end sub
效果:
java如何計算某一天是星期幾
如何計算某一天是星期幾?蔡勒 zeller 公式 歷史上的某一天是星期幾?未來的某一天是星期幾?關於這個問題,有很多計算公式 兩個通用計算公式和一些分段計算公式 其中最著名的是蔡勒 zeller 公式。即w y y 4 c 4 2c 26 m 1 10 d 1 公式中的符號含義如下,w 星期 c 世...
計算這一天是星期幾
編寫程式,該程式啟動後使用者可以按 yyyy mm dd 的格式輸入乙個日期,程式計算這一天是星期幾,並且計算出是一年中的第幾天 列印格式 請輸入數字日期字串 格式 2015 10,20 2017 07 22 2017年 07月 22日是 星期六,是 2017年的第 203 天 public cla...
計算某月每一天是星期幾
當前月 這裡demo是2019 10 25 當月天數 let date new date 獲取當前時期 let y date.getfullyear 獲取當前年份 let date m date.getmonth 獲取當前日期月份 比實際小1 date.setmonth date m 1 生成實際的...