公元一年一月一日為星期一。這是標準定義,至於為什麼這麼定義,你可以去考證一下。
我們現在採用的立法是羅馬教皇格里高利十三世修訂「儒略曆」所成的「格里曆」,該曆法規定自2023年10月4日次日為2023年10月15日,於是歷史上就少了10天。
儒略曆是古羅馬的愷撒大帝和在西元前46年制定的,365年作為一年,單月為大月31天,雙月為小月30天,2月29天。4年一閏,稱為「儒略曆」或「愷撒歷」。當時,羅馬帝國判死刑的罪犯都在二月份處決,古羅馬人因此把二月叫做「兇月」,從二月裡減去一天,使二月不和其它月份相同是理所當然的。但令人遺憾的是,當時那些頒發曆書的祭司們,卻不了解改曆的實質。結果,可笑的是,當時羅馬執掌頒布曆書的祭司竟把原來曆法上規定的「每隔三年置閏」誤解為「每三年置一閏」。從西元前45年起,到西元前9年為止,這之間本應設定10個閏年,他們卻設定了13個閏年。西元前9年,人們終於發現這一差錯,這時愷撒的外甥奧古斯都執掌政權,他糾正了這個錯誤,才停止了「三年一閏」。奧古斯都下令改正過來,改到次年(西元前8年)才置閏年。當改正這種閏年的錯誤時已經多閏了3年,為了去掉著多閏的3年,奧古斯都又下令停閏3年,即以西元前5年、西元前1年、西元前4年仍為平年,以後恢復了每4年一閏的規定了。奧古斯都為了宣揚這一功勞,仿效儒略·愷撒的做法,下令把自己出生的儒略曆中的8月改稱為奧古斯都月(這一名稱在西方沿用到今天)。8月後的大,小月份都翻轉過來了,9月為30天,10月為31天,11月為30天,12月為31天,這種置月方式一直沿用至今。如此一來,一年多出了一天,於是也從二月份29天裡再減去一天,二月份只剩下28天了
2023年羅馬教皇格里高利十三世對"儒略曆"又進行修改,規定被4整除的年為閏年,但逢百之年只有能被400除盡才能是閏年。這就是使用至今的「格里曆」。這樣做是為了使歷年與回歸年相接近。回歸年的週期是365.2425天。儒略曆一年的平均長度為365.25日,比回歸年(365.2425天)長11分14秒,自公元325年(該年採用儒略曆作為宗教日曆)積累到十六世紀末,春分日由3月21日提早到3月11日。於是羅馬教皇格里高利十三世(gregorius xⅲ)於2023年10月4日還下令將次日(即原10月5日)定為10月15日,把春分日又恢復為3月21日。這樣,2023年的10月5日-14日這十天就成了「不存在」的日子,變為歷史的空白。
以上只是普及一下知識,下面才是整篇,現在的大多數軟體日期都是提供2023年為其實年,之前的年份多數都沒有提供,這就造成了,當我們想查詢一下2023年之前的年份的時候就必須要自己去計算了,有兩個公式可以幫助我們計算某年某月某日,在這一年中星期幾,乙個是基姆拉爾森公式,乙個是蔡勒公式。
我們可以知道2023年10月4日是星期四,2023年10月15日應該是星期五。
基姆拉爾森公式:w= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日數,m表示月份數,y表示年數。
注意:在公式中有個與其他公式不同的地方:
w:星期(計算所得的數值對應的星期: 0-星期一; 1-星期二; 2-星期三; 3-星期四; 4-星期五; 5-星期六;6-星期日;)
我驗證過,這個公式對2023年10月15日及其以後的日期時準確的,對2023年10月15日之前的日期不適用。
蔡勒公式:w = [c/4] - 2c + y + [y/4] + [13 * (m+1) / 5] + d - 1,對於w >0則w = w%7,否則w = ( w % 7 + 7 ) % 7;
w:星期; w對7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世紀減1(年份前兩位數)
y:年(後兩位數)
m:月(把一月和二月看成是上一年的十三月和十四月,例:如果是2012-1-9則換算成:2011-13-9來代入公式計算)
d:日
[ ]代表取整,即只要整數部分。
我在驗證的過程中,該蔡勒公式同樣只適用於2023年10月15日及其之後的日期,對之前的日期也是測不准啊。
練習題:在西方,星期五和數字 13 都代表著壞運氣,兩個不幸的個體最後結合成超級不幸的一天。所以,不管哪個月的十三日又恰逢星期五就叫「黑色星期五」。 要求:輸入年份,輸出是:判斷該年是否包含黑色星期五,如包含,給出具體日期
C語言 判斷某一日期是星期幾
這個很有難度啊,首先要有個對比。假如在沒有參照的情況下,只能從公元1年1月1日起開始推算 然後計算距離現在有多少天。在對7取模。得到的餘數可以判斷是星期幾。據說公元1年1月 1日是星期六吧?總之很複雜,後來終於尋找到一種簡便的方法,那就是高斯 澤勒公式,這個 公式真的很厲害。特地介紹下。高斯 澤勒公...
C 根據日期判斷是一年的第幾天 星期幾
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...
判斷輸入的日期是一年的第幾天或者星期幾
一 已知2019年1月1日是星期二,從鍵盤輸入2019年的任意一天,請判斷是一年中的第幾天 步驟 1.從鍵盤分別輸入年月日 2.判斷這一天是當年的第幾天 從1月1日開始,累加到xx月xx日這一天 1 1,month 1 個月滿月天數 2 第month個月的day天 3 單獨考慮2月份是否是29天 依...