精华内容
下载资源
问答
  • 今天在网上看见一些关于 C#实现根据年月日计算星期几 介绍:  算法如下: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中日数,m表示月份数,y表示年数。 注意:在...
  • 今天在网上看见一些关于 C#实现根据年月日计算星期几 介绍: 算法如下: 基姆拉尔森计算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7在公式中d表示日期中日数,m表示月份数,y表...

    DateTime.Now.ToString("dddd",new System.Globalization.CultureInfo("zh-cn"));

     今天在网上看见一些关于 C#实现的根据年月日计算星期几 的介绍:

    算法如下:
    基姆拉尔森计算公式
    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-日期

    Code
    string CaculateWeekDay(int y,int m,int d)
        
    {
            
    string[] weekstr ="""""""""""""" };

            
    if (m < 3)
            
    {
                m 
    += 12;
                
    if (y % 400 == 0 || y % 100 != 0 && y % 4 == 0)
                
    {
                    d
    --;
                }

            }

            
    else
            
    {
                d 
    += 1;
            }

            
    return "星期" + weekstr[(d + 2 * m + 3 * (m + 1/ 5 + y + y / 4 - y / 100 + y / 400% 7]; 
            
    /**/

        }

     

    转载于:https://www.cnblogs.com/feihong84/archive/2008/10/02/1303162.html

    展开全文
  • 今天就给大家介绍两个日期之间差额计算方法,可以精确到年月日。正文开始前,先给大家来一波福利,大家可以去后台自取:《680套Excel实用模板》正文开始,下面是一份账款应收逾期明细,现根据下列应收日期...

    d9935ec29f10df9dbf22df159a0e7388.png

    在日期的计算中,根据很多的小伙伴在后台留言说,如何计算两个日期之间的差额。今天就给大家介绍两个日期之间的差额计算的方法,可以精确到年月日。正文开始前,先给大家来一波福利,大家可以去后台自取:

    《680套Excel实用模板》

    51654e1f62074ba6ebb0bb01a2a27361.png


    正文开始,下面是一份账款应收逾期的明细,现根据下列的应收日期计算与当前日期之间的差额,在D列的单元格中写出公式。

    003512f6e1f25b8f244c0b8fa4e2c7af.png

    方法一

    对于上面的问题,在前面的文章中给大家介绍过关于Datedif函数,如果大家还没有学会的,请参阅文章《账龄分析,你想要的方法这里都有,整理全了!

    在D2单元格中输入公式:

    =DATEDIF(B2,TODAY(),"y")&"年"&DATEDIF(B2,TODAY(),"ym")&"个月"&DATEDIF(B2,TODAY(),"md")&"天",按Enter键后完成向下填充即可。

    需要注意的是:双引号均是英文半角。TODAY()函数为返回当前的日期,无任何的参数。公式是分别获取了两个日期相隔的年,月,日然后将其连接起来。

    如下图所示:

    698277cb4b7ad0e671bc10894797906f.png

    方法二

    除了上面的方法还有一个更加简单的方法。

    在D2单元格中输入公式:

    =TEXT(SUM(DATEDIF(B2,TODAY(),{"y","ym","md"})*10^{4,2,0}),"0年00月00天")

    然后按Enter键后向直填充即可。

    需要注意的是:这里先使用Datedif函数将相隔的年,月,日计算出来,再分别乘以10000,100,10进行相加,组成一个五位数,然后使用Text函数返回相应的格式。如下图所示:

    e6738e0bf80b78715f2d6c537fa25832.png

    福利时间

    64cf8723cc0b8878d88514c1801b1e2e.gif

    f8ec3fec217bf18aa29338e6a257fbb3.png

    本文来源:24财务Excel,作者世杰老师

    1ef3a97f53b8c7367ee27bd30725c226.png在看点这里445791689cbeacd44b962d2674e111e0.gif
    展开全文
  • 关于根据日期推算是星期几算法很多,但是最出名是蔡勒公式, w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 公式符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡勒...

    关于根据日期推算是星期几的算法很多,但是最出名的是蔡勒公式,

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

    公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。(C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值。)
    其中,算出的结果对7取余,结果是几便是星期几,0为星期天。

    实现代码非常简单,

    int  nCount(tm t)
    {
        tm tCount = t;
        int w = 0;
        int c = 0;
        int y = 0;
        int m = 0;
        int d = 0;
        if (tCount.tm_mon == 0 || tCount.tm_mon == 1)
        {
            tCount.tm_year -= 1;
            tCount.tm_mon += 12;
        }
        //根据蔡勒公式
        c = (tCount.tm_year + 1900) / 100 + 1 - 1;
        m = tCount.tm_mon + 1;
        d = tCount.tm_mday;
        y = (tCount.tm_year + 1900) % 100;
        w = y + y / 4 + c / 4 - 2 * c + 26 * (m + 1) / 10 + d - 1;
        w = w % 7;
        return w;
    }




    展开全文
  • #include #include // 历史上某一天是星期几?未来某一天是星期几?...//关于这个问题,最著名计算公式是蔡勒(Zeller)公式。即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 // // output: w: 0 - Sunday; //
    #include <stdio.h>
    #include <stdlib.h>
    
    // 历史上的某一天是星期几?未来的某一天是星期几?
    //关于这个问题,最著名的计算公式是蔡勒(Zeller)公式。即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
    //
    //                                                      output: w: 0 - Sunday;
    //                                                                 1 - Monday;
    //                                                                 2 - Tuesday;
    //                                                                 3 - Wednesday;
    //                                                                 4 - Thursday;
    //                                                                 5 - Friday;
    //                                                                 6 - Saturday;
    
    
    //公式中的符号含义如下,w:星期;
    //                      c:世纪-1;
    //                      y:年(两位数);
    //                      m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,
    //                         比如2003年1月1日要看作2002年的13月1日来计算);
    //                      d:日;[ ]代表取整,即只要整数部分。
    // 
    //注:C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和14月来算,这时C和y均按上一年取值。)
    
    //int current_year = 2000 + year_input; //以2000.1.1为例,设置如下: 
    //uint8_t year_input = 0;  
    //uint8_t month_input = 1;
    //uint8_t day_input = 1;
    
    typedef unsigned char   uint8_t;     //无符号8位数
    typedef unsigned short  uint16_t;    //无符号16位数 
    
    //输入年月日,输出星期几    
    uint8_t ZellerFunction2Week(uint16_t year_local, uint8_t month_local, uint8_t day_local)
    {
        uint8_t week_output = 0;
    
        uint8_t y, m, c; 
    
        //3<=month<=14 //重要!!!!     
        if (month_local >= 3)  
        {  
            m = month_local;          
            y = year_local % 100;  //年(后两位数)
            c = year_local / 100;  //当前世纪数减一
        }  
        else    /* 某年的1、2月要看作上一年的13、14月来计算 */  
        {  
            m = month_local + 12;  
            y = (year_local - 1) % 100;  
            c = (year_local - 1) / 100;   
        }  
    
        int week = y + (y/4) + (c/4) - 2*c + ((26*(m+1))/10) + day_local - 1;
        //w = y + y / 4 +  c / 4 - 2 * c + ((uint16_t)26*(m+1))/10 + d - 1;  
    
        printf ("Before: week is %d\n\r", week);
    
        if (week < 0)/* 如果week是负数,则计算余数方式不同 */  
        {  
            week = 7 - (-week) % 7;  
        }  
        else  
        {  
            week = week % 7;  
        }  
    
        printf ("After: week is %d\n\r", week);
    
        week_output = (uint8_t)week;
    
        return week_output;
    }
    
    //输入年月日,判断日期的有效性 
    bool CheckDate(uint16_t year1, uint8_t month1, uint8_t day1)
    {
        bool check_result = false;
        printf("CheckDate: the input date is %d-%d-%d\n\r\n", year1, month1, day1);
    
        if(month1>12)
        {
            check_result = false;
            return check_result;
        }
        else if(day1>31)
        {
            check_result = false;
            return check_result;
        }
        else if((month1==2||month1==4||month1==6||month1==9||month1==11)&&day1==31)
        {
            check_result = false;
            return check_result;
        }
        else if(month1==2&&day1==30)
        {
            check_result = false;
            return check_result;
        }
        else if(month1==2&&day1==29)
        {
            if( ((year1 % 4 == 0) && (year1 % 100 != 0)) || (year1 % 400 == 0) ) //闰年判断 :能被4整除且不能被100整除; 能被400整除
            {
                check_result = true;
            }
            else
            {
                check_result = false;
                return check_result;
            }
        }
        else
        {
            check_result = true;
        }
    
        printf("CheckDate: %c\n\r", check_result?'y':'n');
    
        return check_result;
    }
    
    #define WEEK_TEST_MUNUAL   1  
    int main()
    {   
    #if WEEK_TEST_MUNUAL 
        //uint8_t year_input = 0 ;  //int current_year = 2000 + year_input; //以2000.1.1为例 
        //uint8_t month_input = 0;
        //uint8_t day_input = 0;
    
        unsigned int year_input = 0 ;  //int current_year = 2000 + year_input; //以2000.1.1为例 
        unsigned int month_input = 0;
        unsigned int day_input = 0;
    #else
        uint8_t year_input = 0 ;  //int current_year = 2000 + year_input; //以2000.1.1为例 
        uint8_t month_input = 1;
        uint8_t day_input = 1;
    #endif    
    
        uint8_t week_get;   
        bool flag = 0;
    
    #if WEEK_TEST_MUNUAL 
        do
        { 
            printf ("please input year(1byte: 0 - 127):\n\r");
            scanf("%u" , &year_input);
            printf ("please input month(1byte: 1 - 12):\n\r");
            scanf("%u" , &month_input);
            printf ("please input day(1byte: 1 - 31):\n\r");
            scanf("%u" , &day_input);
    
            //判断输入年月日的有效性,如果有效 flag = 1;无效flag = 0; 
            flag = CheckDate(year_input + 2000, month_input, day_input);//注:以下函数中的代码可以计算所有年、月、日对应的星期几,但是此处年份限制在2000以后 
    
            if(flag == 0)
            {
                printf("you input a wrong date! Please inpuu again!\n\r");
                printf("\n\r");
            } 
    
        }while(flag == 0);
    #endif
    
        printf ("You have inputed date is %u-%u-%u\n\r", year_input, month_input, day_input);   
    
        week_get = ZellerFunction2Week(year_input + 2000, month_input, day_input);
    
        printf ("Get: week_get is %d\n\r", week_get);
    
        system("pause"); 
        return 0;
    } 
    

    执行结果:
    这里写图片描述

    展开全文
  • Java打印年月日历

    2019-06-12 13:36:53
    一.功能 根据用户输入的年份和月份,在控制台打印出对应月份的日历。 二....要打印一个月的日历只需要知道两件事。...不用选择参考年月日; (2)不用计算参考日到计算日的间隔天数; (3)不用计算一年有多少天。...
  • EXCEL函数公式

    热门讨论 2010-03-16 03:26:38
    从身份证号码中提取出生年月日 从身份证号码中提取出性别 从身份证号码中进行年龄判断 按身份证号号码计算至今天年龄 以2006年10月31日为基准日,按按身份证计算年龄(周岁)的公式 按身份证号分男女年龄段 【年龄和...
  • 题意 给出一个年月日, 求接下来最近哪一年...基姆拉尔森公式求星期即可, 特别注意2月29日的特判 ! 关于基姆拉尔森公式 : 基姆拉尔森公式模板 int weekday(int y, int m, int d) { if(m==1||m==2){ m+=12;...
  • 今天老菜鸟针对上述在日常工作中经常会遇到的问题,总结了20个常用的关于日期和时间的公式,赶紧来看看吧!学习更多技巧,请收藏关注部落窝教育excel图文教程。在实际工作中,经常需要进行日期和时间...
  • 今天老菜鸟针对上述在日常工作中经常会遇到的问题,总结了20个常用的关于日期和时间的公式,赶紧来看看吧!学习更多技巧,请收藏关注部落窝教育excel图文教程。在实际工作中,经常需要进行日期和时间...
  • 前六位是本人地理位置所对应编号,然后八位是你出生年月日,后三位是顺序码,就是跟你同年月日出生顺序,奇数是男,偶数是女。 然后是最后一位数字计算,就是求得前17位本体码加权求和公式 公式...
  • 关于日期问题花式总结 ——河马数学邵思涵老师学了年月日,很多小朋友最迷惑不是区分大月和小月,不是判断平年和闰年,不是计算开始时间、经过时间和结束时间,而是怎么区分两头都算、算头不算尾、算尾不算头,...
  • 从身份证号码中提取出生年月日 从身份证号码中提取出性别 从身份证号码中进行年龄判断 按身份证号号码计算至今天年龄 以2006年10月31日为基准日,按按身份证计算年龄(周岁)的公式 按身份证号分男女年龄段 【年龄和...
  • 关注订阅 Excel技巧提升营想提升职场竞争力的都置顶了▼▼▼编按:哈喽,大家好!...今天针对上述在日常工作中经常会遇到的问题,总结了20个常用的关于日期和时间的公式,赶紧来看看吧!在实际工作中,经常需要进...
  • 符以及公式中包含某字符),也可以将搜索结果写入到一新工作表中以备查。 【EXCEL比较工具】 打开并比较任意两个EXCEL文档工作表内容之间差异,可对比出哪些内容作了修改。 【工具箱选项】 集成工具箱基本...
  • 符以及公式中包含某字符),也可以将搜索结果写入到一新工作表中以备查。 【工具箱选项】 集成工具箱基本选项设置。基本分为<显示设置区><隐藏功能区><自动备份区><工作表设置区><功能窗体显示区>。其中功能...
  • 符以及公式中包含某字符),也可以将搜索结果写入到一新工作表中以备查。 【工具箱选项】 集成工具箱基本选项设置。基本分为<显示设置区><隐藏功能区><自动备份区><工作表设置区><功能窗体显示区>。其中功能...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    符以及公式中包含某字符),也可以将搜索结果写入到一新工作表中以备查。 【工具箱选项】 集成工具箱基本选项设置。基本分为<显示设置区><隐藏功能区><自动备份区><工作表设置区><功能窗体显示区>。其中功能...
  • 符以及公式中包含某字符),也可以将搜索结果写入到一新工作表中以备查。 【工具箱选项】 集成工具箱基本选项设置。基本分为<显示设置区><隐藏功能区><自动备份区><工作表设置区><功能窗体显示区>。其中功能...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

关于年月日的公式