前提:公元1年1月1日是星期一
def data(y,m,d):
ans = 0
month = [31,29,31,30,31,30,31,31,30,31,30,31]
if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0:
month[1] = 29
else:
month[1] = 28
for i in range(1,y): # 注意計算之前年的天數時要從1開始計算
if (i % 4 == 0 and i % 100 != 0) or i % 400 == 0:
ans += 366
# ans = ans % 7
else:
ans += 365
# ans = ans % 7
for i in range(m-1): # 這裡因為月份是由陣列表示的,從1月加到m-1月在陣列中就是從下標0加到下標m-2
ans += month[i]
# ans = ans % 7
ans += (d-1) # 這裡的d-1,是因為天數的計算是基於公元1年1月1日來計算的,所以d要減去1
return ans%7 # 最後這裡對7取餘也可以,如果計算的年數過多可以邊加天數,邊對7取餘,就像注釋掉的那些**一樣
或者基姆拉爾森公式
def data(y,m,d):
if(m==1 || m==2): # 1月、2月 要當成去年的13月和14月,因此y要減一
y -= 1, m += 12;
return (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7
計算出某年某月某日是星期幾
如何精確地計算出某年某月某日是星期幾,這是乙個很讓人頭疼的事情,下面給出乙個公式 星期計算公式 年 年 4 年 400 年 100 年基數 月基數 日 7 餘星期幾 注 式中分數均取整 年基數,平年1,閏年2,月基數,1 平年 一月0,二月3,三月3,四月6,五月1,六月4,七月0,八月3,九月5,...
某年某月某日是該年的第幾天
該程式主要是邏輯判斷 閏年的判別能被4 整除且不能被100整除或者能被400整除 if 0 year 4 0 year 100 0 year 400 include int main void void sum day int year,int mon,int day sday sday day p...
某年某月某日屬於某月的第幾周
有人在php版問 某月某日所對應的週數應該怎麼做.比如9月8號,對應的是本月的第幾周.演算法 1 m x年y月1日前空著的天數。比如,用windows看今天是2008年9月12日,本月1日前空著1天,所以m 1。2 w x年y月z日是y月的第w周。x 2008 y 9 z 12 m date n s...