久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6585|回復: 3
收起左側

一個非常簡潔的計算星期幾的程序

[復制鏈接]
ID:68618 發(fā)表于 2014-11-22 15:51 | 顯示全部樓層 |閱讀模式
蔡勒(Zeller)公式:是一個計算星期的公式。
隨便給一個日期,就能用這個公式推算出是星期幾。

蔡勒公式如下:
W = [ C/4 ] - 2C + y + [ y/4 ] + [ 13 * (M + 1) / 5] + d -1


公式中的符號含義如下:
W: 星期; w對7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
C: 世紀-1(前兩位數(shù))
y: 年(后兩位數(shù))
m: 月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計算,比如2003年1月1日要看作2002年的13月1日來計算)
d: 日
[ ]代表取整,即只要整數(shù)部分。

下面以中華人民共和國成立100周年紀念日那天(2049年10月1日)來計算是星期幾,過程如下:
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=49+[49/4]+[20/4]-2×20+[26×(10+1)/10]+1-1
=49+[12.25]+5-40+[28.6]
=49+12+5-40+28
=54 (除以7余5)
即2049年10月1日(100周年國慶)是星期五。

再比如計算2006年4月4日,過程如下:
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=6+[6/4]+[20/4]-2*20+[26*(4+1)/10]+4-1
=-12 (除以7余2,注意對負數(shù)的取模運算!)

      不過,以上的公式都只適合于1582年(我國明朝萬歷十年)10月15日之后的情形。羅馬教皇格里高利十三世在1582年組織了一批天文學家,根據(jù)哥白尼日心說計算出來的數(shù)據(jù),對儒略歷作了修改。將1582年10月5日到14日之間的10天宣布撤銷,繼10月4日之后為10月15日。后來人們將這一新的歷法稱為“格里高利歷”,也就是今天世界上所通用的歷法,簡稱格里歷或公歷。  

程序一:
// 計算2000~2099年任一天星期幾
// year    : 00-99
// month: 01-12
// day     : 01-31
unsigned char GetWeekFromDay(unsigned char year,unsigned char month,unsigned char day)
{
    if( month == 1 || month == 2 )   
    {
        month += 12;
        if( year > 0 )
            year--;
        else
            year = 4;
    }

    // 返回星期幾(星期一用1表示,而星期天用7表示)
    return 1+(( day + 2*month + 3*(month+1)/5 + year + year/4 ) %7);
}  

程序二:這個算法效率比一高好多。。。。

//論空間還是時間,另外,擴展個幾千年也很容易。
//51的話,可以定義在CODE,不光省RAM,還節(jié)省代碼空間(少一條MOV指令)。
uchar        WeekData[]={0,3,3,6,1,4,6,2,5,0,3,5};
/*2000-2099*/
unsigned char GetWeekDay(unsigned char year,unsigned char month,unsigned char day)  
{
        return        ((6+WeekData[month-1]+year+day+year/4)%7);
}

這里0代表星期天,使用者應該加上日前限定的功能。

學習之。
回復

使用道具 舉報

ID:325735 發(fā)表于 2022-5-16 15:05 | 顯示全部樓層
方法二真 牛逼   感謝
回復

使用道具 舉報

ID:195496 發(fā)表于 2022-10-21 14:45 | 顯示全部樓層
方法二算出來的不對,方法一算出來的正確
回復

使用道具 舉報

ID:1064915 發(fā)表于 2023-8-8 17:31 | 顯示全部樓層
2023.8.8用方法二算出來是星期三
實際是星期二,哪里錯了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 四虎www | 国产黄色免费网站 | 国产精品久久午夜夜伦鲁鲁 | 国产伦理一区二区 | 99小视频| 国产欧美一区二区三区视频在线观看 | 免费久久久| 九九香蕉视频 | 亚洲精品网站在线观看 | 国产精品区二区三区日本 | 老司机免费福利视频 | 久草福利在线观看 | 高潮一区二区三区乱码 | 成人在线观看免费爱爱 | 一区二区三区色 | 亚洲成人中文字幕 | 天堂a在线| 中文字幕不卡视频 | 亚洲成人免费网站 | 欧美国产在线视频 | 亚洲免费小视频 | 天天拍天天干 | 一区二区视频在线 | 久草福利在线观看 | 免费一级a毛片 | 一区二区三区在线观看视频 | 日韩毛片在线 | 午夜在线 | 日韩在线欧美 | 国产成人午夜高潮毛片 | 天天操一操| 午夜999 | 免费毛片在线播放免费 | 国产性猛交╳xxx乱大交 | 国产亚洲视频在线观看 | 成人三级视频 | 久久久久久久久国产 | 麻豆成人免费视频 | 国产激情视频在线 | 69视频在线观看 | 国产精品羞羞答答 |