日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算任何一天是星期几的几种算法

發(fā)布時間:2025/1/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算任何一天是星期几的几种算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
計算任何一天是星期幾的幾種算法 一:常用公式

W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D

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

二:蔡勒(Zeller)公式

w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

公式中的符號含義如下,w:星期;c:世紀;y:年(兩位數); m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計算,比如2003年1月1日要看作2002年的13月1日來計算);d:日;[ ]代表取整,即只要整數部分。

相比于通用通用計算公式而言,蔡勒(Zeller)公式大大降低了計算的復雜度。

三:對蔡勒(Zeller)公式的改進

相比于另外一個通用通用計算公式而言,蔡勒(Zeller)公式大大降低了計算的復雜度。不過,筆者給出的通用計算公式似乎更加簡潔(包括運算過程)。現將公式列于其下:
W=[y/4]+r (y/7)-2r(c/4)+m’+d

公式中的符號含義如下,r ( )代表取余,即只要余數部分;m’是m的修正數,現給出1至12月的修正數1’至12’如下:(1’,10’)=6;(2’,3’,11’)=2;(4’,7’)=5;5’=0;6’=3;8’=1;(9’,12’)=4(注意:在筆者給出的公式中,y為潤年時1’=5;2’=1)。其他符號與蔡勒(Zeller)公式中的含義相同。

四:基姆拉爾森計算公式

這個公式名稱是我給命名的,哈哈希望大家不要見怪。

W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

在公式中d表示日期中的日數,m表示月份數,y表示年數。

注意:在公式中有個與其他公式不同的地方:

把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10則換算成:2003-13-10來代入公式計算
//y:年,m:月,d:日。在參數都只傳入相應的整數// ********************************************/ string str_week(int y,int m,int d){ int a=7; // 用來保存計算得到的星期幾的整數string str_date="";if((m==1)||(m==2))//如果是一月或二月進行換算{m+=12;y--;}a=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; //得到的星期幾的整數switch (a){ case 0:str_date="星期一";break;case 1:str_date="星期二";break;case 2:str_date="星期三";break;case 3:str_date="星期四";break;case 4:str_date="星期五";break;case 5:str_date="星期六";break;case 6:str_date="星期日";break;}return str_date; }int main() {int y, m, d;cout << "輸入日期:如 2012-03-30" << endl;scanf("%d-%d-%d", &y, &m,&d);cout << str_week(y, m, d) << endl; }
原文地址:http://blog.csdn.net/whz_zb/article/details/7425260

總結

以上是生活随笔為你收集整理的计算任何一天是星期几的几种算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。