C 根據日期判斷是一年的第幾天 星期幾

2022-03-17 19:02:35 字數 1114 閱讀 6241

w = [y-1] + [(y-1)/4] - [(y-1)/100] + [(y-1)/400] + d

y是年份數,d是這一天在這一年中的累積天數,也就是這一天在這一年中是第幾天。

最好用的是蔡勒公式:

w = [c/4] - 2c + y + [y/4] + [13 * (m+1) / 5] + d - 1

c是世紀數減一,y是年份後兩位,m是月份,d是日數。1月和2月要按上一年的13月和

14月來算,這時c和y均按上一年取值。

兩個公式中的[...]均指只取計算結果的整數部分。算出來的w除以7,餘數是幾就

是星期幾。如果餘數是0,則為星期日。

我們知道,公曆的平年是365天,閏年是366天。置閏的方法是能被4整除的年份在

2月加一天,但能被100整除的不閏,能被400整除的又閏。因此,像1600、2000、2400

年都是閏年,而1700、1800、1900、2023年都是平年。西元前1年,按公曆也是閏年。

因此,對於從西元前1年(或公元0年)12月31日到某一日子的年份y之間的所有整年

中的閏年數,就等於

[(y-1)/4] - [(y-1)/100] + [(y-1)/400],

[...]表示只取整數部分。第一項表示需要加上被4整除的年份數,第二項表示需要去掉

被100整除的年份數,第三項表示需要再加上被400整除的年份數。之所以y要減一,這

樣,我們就得到了第乙個計算某一天是星期幾的公式:

w = (y-1)*365 + [(y-1)/4] - [(y-1)/100] + [(y-1)/400] + d. (1)

其中d是這個日子在這一年中的累積天數。算出來的w就是西元前1年(或公元0年)12月

31日到這一天之間的間隔日數。把w用7除,餘數是幾,這一天就是星期幾。比如我們來

算2023年5月1日:

w = (2004-1)*365 + [(2004-1)/4] - [(2004-1)/100] + [(2004-1)/400] +

(31+29+31+30+1)

= 731702,

731702 / 7 = 104528……6,餘數為六,說明這一天是星期六。這和事實是符合的。

輸入日期判斷這天是一年中第幾天

判斷這天是一年中第幾天 nonleap 0 31,28 31,30 31,30 31,31 30,31 30,31 leap 0 31,29 31,30 31,30 31,31 30,31 30,31 sum 0 date input 請輸入想要查詢的年月日,格式如 x xx xx n date d...

根據年月日判斷這一年第幾天

演算法描述 輸入某年某月某日,判斷這一天是這一年的第幾天?輸入格式 輸入三個整數,分別代表 年 月 日。輸出格式 乙個整數,代表這一天是這一年的第幾天。樣例資料輸入 2018 3 5 樣例資料輸出 65思路 本題要做到容錯的話,需要對輸入的年月日進行判斷,看其值是否符合,例如 0 2 3 2018 ...

判斷輸入的日期是一年的第幾天或者星期幾

一 已知2019年1月1日是星期二,從鍵盤輸入2019年的任意一天,請判斷是一年中的第幾天 步驟 1.從鍵盤分別輸入年月日 2.判斷這一天是當年的第幾天 從1月1日開始,累加到xx月xx日這一天 1 1,month 1 個月滿月天數 2 第month個月的day天 3 單獨考慮2月份是否是29天 依...