精华内容
下载资源
问答
  • 年月日计算星期公式

    千次阅读 2015-12-09 11:16:43
    if( M==1 || M==2 ) { M+=12; --Y; } //1582年9月3后:w = (d + 2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; //1582年9月3前:w = (d+2*m+3*(m+1)/5+y+y/4+5) % 7;... //蔡勒公式 0是星期天 if( Y ||

    if( M==1 || M==2 )
        {
            M+=12;
            --Y;
        }
    	//1582年9月3日后:w = (d + 2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
    	//1582年9月3日前:w = (d+2*m+3*(m+1)/5+y+y/4+5) % 7;
    	//0是星期一
        if( Y < 1582 || Y == 1582 && M < 9 || Y == 1582 && M == 9 && D < 3 ) return (D+2*M+3*(M+1)/5+Y+Y/4+5)%7;
        else return (D+2*M+3*(M+1)/5+Y+Y/4-Y/100+Y/400)%7;


    int c=year/100;
    int y=year-c*100;
    int week=(c/4)-2*c+(y+y/4)+(13*(month+1)/5)+day-1;
    while(week<0){week+=7;}
    week%=7;
    switch(week)
    {
    case 1:printf("Monday\n");break;
    case 2:printf("Tuesday\n");break;
    case 3:printf("Wednesday\n");break;
    case 4:printf("Thursday\n");break;
    case 5:printf("Friday\n");break;
    case 6:printf("Saturday\n");break;
    case 0:printf("Sunday\n");break;
    //只有在1582 9 3后使用
    }


    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    
    string weeks[7]= {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
    string months[12]= {"January","February","March","April","May","June","July","August","September","October","November","December"};
    
    int day1(int M,int D,int Y)
    {
    	if( M==1 || M==2 )  
        {  
            M+=12;  
            --Y;  
        }
        if( Y < 1582 || Y == 1582 && M < 9 || Y == 1582 && M == 9 && D < 3 ) return (D+2*M+3*(M+1)/5+Y+Y/4+5)%7;  
        else return (D+2*M+3*(M+1)/5+Y+Y/4-Y/100+Y/400)%7;  
    }
    void day2(int month,int day,int year)
    {
    	int c=year/100;  
    	int y=year-c*100;  
    	int week=(c/4)-2*c+(y+y/4)+(13*(month+1)/5)+day-1;  
    	while(week<0){week+=7;}  
    	week%=7;  
    	switch(week)  
    	{  
    		case 1:printf("Monday\n");break;  
    		case 2:printf("Tuesday\n");break;  
    		case 3:printf("Wednesday\n");break;  
    		case 4:printf("Thursday\n");break;  
    		case 5:printf("Friday\n");break;  
    		case 6:printf("Saturday\n");break;  
    		case 0:printf("Sunday\n");break;  
    		default: ;
    	}  
    }  
    
    int main()
    {
        int m, d, y;
        while( scanf("%d %d %d",&m, &d, &y), m+d+y )
        {
            printf("%s\n",weeks[day1(m,d,y)].c_str());
    		day2(m,d,y);
        }
    	return 0;
    }


    展开全文
  • 主要介绍了C++基于蔡基姆拉尔森计算公式实现由年月日确定周几的方法,涉及C++针对日期时间的数值运算相关操作技巧,需要的朋友可以参考下
  • 根据年月日计算星期的公式 计算星期可以用蔡勒(Zeller)公式(只适合于1582年10月15之后的情形): w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 公式中的符号含义如下: c:世纪(年的高两位数); y:年(年的低两...

    根据年月日计算星期的公式

     

     

    计算星期可以用蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形):

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

     公式中的符号含义如下:
         c:世纪(年的高两位数);
         y:年(年的低两位数);
         m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月
            来计算,比如2005年1月1日要看作2004年的13月1日来计算);
         d:日;
         []代表取整,即只要整数部分。
         w:星期;w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,
            5-星期五,6-星期六

     以2005年2月14日为例:c=20,y=4,m=14,d=14
         w = 4 + [4/4] + [20/4] - 2*20 + [26*(14+1)/10] + 14 - 1
           = 4 + 1     + 5      - 40   + 39             + 14 - 1
           = 22 (除以7余1)
     所以2005年2月14日是星期一。

     

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jerryren/archive/2005/04/13/345972.aspx

    展开全文
  • 原标题:「每日一练」Python实现输入年月日计算第几天那天碰到一个小伙问我:你数学不是很牛逼吗,那我给你说某一年的某一月的某一天,你能马上给我算出这是那一年的第几天吗?我瞬间哑口无言!最近,突然想到这个事...

    原标题:「每日一练」Python实现输入年月日计算第几天

    那天碰到一个小伙问我:你数学不是很牛逼吗,那我给你说某一年的某一月的某一天,你能马上给我算出这是那一年的第几天吗?我瞬间哑口无言!

    最近,突然想到这个事,用python随便写了几行,轻轻松松的就实现了!

    案例

    输入某年某月某日,判断这一天是这一年的第几天?

    先上代码~

    a61cc39fb43e4fe2a5503bfc2a01209a.jpeg

    运行效果

    3eddf97b2ae8442c9b480afac5d346e0.jpeg

    题目详述

    程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于2时需考虑多加一天:

    前三行:

    year = int(input('年:\n'))

    month = int(input('月:\n'))

    day = int(input('日:\n'))

    这是用来输入年、月、日的,并将它们转换成数字,赋值给不同的变量

    第四行:

    months = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)

    除了二月外,其余的上个月月底是今天的第几天

    第五行:

    if 0 < month <= 12:

    sum = months[month - 1]

    else:

    print('填写的日期错误')

    用月来判断,如果大于0,小于等于12,得到上个月月底是今年的第几天

    第六行:

    sum += day

    再加上这个月的天数,就得到了是今年的第几天

    第七行:

    leap = 0

    if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):

    leap = 1

    if (leap == 1) and (month > 2):

    sum += 1

    通过判断是否是瑞年,考虑二月那一天是否加1:

    如果是闰年,并且输入的月份大于2,就需要将天数加1,因为闰年的2月是29天

    进阶:

    轻松的就算出了是当年的第几天

    是不是很便捷呢

    结束语

    总体来说思路只要有了,以后遇到类似的问题就可以解决了,是不是发现原来Python可以这么神奇!

    ———— e n d ————

    f09649f963c64272b342e600cb797347.jpeg

    觉得文章不错的,欢迎点在看和转发返回搜狐,查看更多

    责任编辑:

    展开全文
  • 计算公式 由于罗马教皇搞了一些骚操作,这里给出的公式仅适用于1582年10月15以后的星期,详情可参考 格里高利历 符号意义 w:星期; w对7取模得:0-星期,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6...

    蔡勒(Zeller)公式,是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几。

    计算公式

    由于罗马教皇搞了一些骚操作,这里给出的公式仅适用于1582年10月15日以后的星期,详情可参考

    格里高利历

    1195932-20181211215753001-411716098.bmp

    符号意义

    w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六

    c:世纪(注:一般情况下,在公式中取值为已经过的世纪数,也就是年份除以一百的结果,而非正在进行的世纪,也就是现在常用的年份除以一百加一;不过如果年份是公元前的年份且非整百数的话,c应该等于所在世纪的编号,如公元前253年,是公元前3世纪,c就等于-3)

    y:年(一般情况下是后两位数,如果是公元前的年份且非整百数,y应该等于cMOD100+100)

    m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)

    d:日

    [ ]代表取整,即只要整数部分。

    C语言代码

    int Calculate_Week( int year , int month, int day )
    {
        int c,y,week;
        if (month == 1 || month == 2)
        year--, month += 12;
        c = year / 100;
        y = year - c * 100;
        week = y + y / 4 + c / 4 - 2 * c + 26 * (month + 1) / 10 + day - 1;
        while (week < 0)
        week += 7;
        week %= 7;
        return week;
    }

    吐槽

    返回值0代表星期日

    转载于:https://www.cnblogs.com/velscode/p/10105590.html

    展开全文
  • 基姆拉尔森计算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7在公式中d表示日期中的日数,m表示月份数,y表示年数。注意:在公式中有个与其他公式不同的地方:把一月和二月看成是上一年的十三月和十四月,例:...
  • 原文地址:...   蔡勒公式中本年1,2月输入应为13,14。   #include&lt;iostream&gt; using namespace std;   int CaculateWeekDay(int y, int m, int d) ...
  • 计算方法 //d: m:月 y:年 int whatDayIsToday(int d, int m, int y) { if (m == 1 || m == 2) m += 12, y--; return (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7 + 1; } ...
  • //蔡勒公式计算输入年月日,求该天是星期几 #include int main() { int year,month,day; while(scanf("%d%d%d",&year,&month,&day)!=EOF) { if(month == 1||month == 2)//判断month是否为1或2  { year--;...
  • private int zellerWeek(int year,int month,int day){ int m = month; int d= day; if(month &lt;= 2){ year--; m=month+12; } int y = year%100; int c = year/100;... int w = (y...
  • 算法如下:基姆拉尔森计算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数,m表示月份数,y表示年数。 注意:在公式中有个与其他公式不同的地方: 把一月和二月看成是上一年的十...
  • 基姆拉尔森计算公式 W= (d+2m+3(m+1)/5+y+y/4-y/100+y/400) mod 7 二、代码部分 1.引入库 代码如下(示例): #include<stdio.h> 2.主函数部分 代码如下(示例): int main() { int w, y, m, d; scanf
  • 蔡勒公式 输入:year:取年份后2位,比如2021取21 输出结果:0-星期,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六 **/ uint8_t getDayOfWeek(uint8_t year, uint8_t month, uint8_t day) { ...
  • 蔡勒公式 蔡勒(Zeller)公式:是一个计算星期的公式。 随便给一个日期,就能用这个公式推算出是星期几。 蔡勒公式如下: W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1 或者是:w=y+[y/4]+[c/4]-2c+...
  • public static void main(String[] args) { int weekDay = CalculateWeekDay(2021,...//基姆拉尔森计算公式根据日期判断星期几 public static int CalculateWeekDay(int y, int m, int d) { if (m == 1 || m == 2) {
  • 蔡勒公式中本年1,2月输入应为13,14。 此代码经过修正,正常输入月份即可。 #include&lt;iostream&gt; using namespace std; int CaculateWeekDay(int y, int m, int d) { if(m==1||m==2) { m+=12; ...
  • Caculate 年月日 快捷转换公式

    千次阅读 2012-03-29 10:41:10
    经常碰到 日期转换的问题, 无意间发现个好公式. 贴上代码 int CaculateWeekDay(int y, int m, int d) { if(m==1 || m==2) //这个公式 是把 1~2 月 看成 上年的 13 14 月 { m += 12; y--; } return (d+2*m +...
  • /* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved.... * 作 者:解晓东 * 完成日期:2012 年 10 月 27 ...* 版 本 号:v1.0 ...* 输入描述:输入年月日 * 问题描述:运用蔡勒公式求星期几
  • 年月周星期计算年月日 C++题目参考资料注意思路c++代码 题目 输入年、月、第几周、周几,输出对应的 年、月、。 参考资料 1.https://blog.csdn.net/qq_42403069/article/details/86305578 2....
  • 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数,m表示月份数,y表示年数。 注意:在公式中有个与其他公式不同的地方:  把一月和二月看成是上一年的十三月和十四月...
  • "{0}年{1}月{2}是{3}" ,year,month,day, str ); Console.ReadKey(); } public static string Add( int y, int m, int d) { if (m == 1 || m == 2 ) { m += 12 ; y--; //把一月和二月看成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,793
精华内容 2,717
关键字:

年月日的换算公式