原创 不需考虑闰年校验的星期算法

2006-12-30 01:45 4247 9 9 分类: MCU/ 嵌入式
note.gif不需考虑闰年校验的星期算法(8700字)hotpower2004-6-8 21:19:02[48次]

在不要星期表的星期算法中,由于已包含了闰年的容错算法,所以可以不需考虑闰年的校
验,故可归纳为:

一。(百年%4*5天+年+年/4+(13*月-1)/5+日)%7
注:月从3月开始,即3月为1,。。1月为11,2月为12

unsigned char CalcWeekDay (unsigned int year, unsigned char month ,unsigned
char day )
{
    if ( month > 2)
         { month  -= 2;}
    else
        {
           month +=10 ; year--;   
        }
    return ( ((year/100)%4*5 + (year%100) + (year%100) /4  + ( 13 * month -
1 ) / 5   + day)% 7  );
}

unsigned char CalcWeekDay (unsigned int year, unsigned char month ,unsigned
char day )
{
    if ( month > 2)
         { month  -= 2;}
    else
        {
           month +=2 ; year--;//1,2月同5,6月星期表   
        }
    return ( ((year/100)%4*5 + (year%100) + (year%100) /4  + ( 13 * month -
1 ) / 5   + day)% 7  );
}

二。(百年%4*5天+年+年/4+(13*(月-2)-1)/5+日)%7
  或(百年%4*5天+年+年/4+(13*月-27)/5+日)%7

注:月从3月开始,即3月为3,。。12月为12,1月为13,2月为14
即:今年的 1月 2月是去年的“13月14月”
    今天的13月14月是明年的“ 1月 2月”
故可为:
unsigned char CalcWeekDay (unsigned int year, unsigned char month ,unsigned
char day )
{
    if ( month <= 2)
        {
           month +=12 ;//今年的 1月 2月是去年的“13月14月”
           year--;//注意“去年”2字   
        }
    return ( ((year/100)%4*5 + (year%100) + (year%100) /4  + ( 13 * month -
27 ) / 5   + day)% 7  );
}

unsigned char CalcWeekDay (unsigned int year, unsigned char month ,unsigned
char day )
{
    if ( month <= 2)
        {
           month |=4 ;//今年的 1月 2月是也是去年的“5月6月”的月表
           year--;//注意“去年”2字   
        }
    return ( ((year/100)%4*5 + (year%100) + (year%100) /4  + ( 13 * month -
27 ) / 5   + day)% 7  );
}

三。(百年%4*5天+年+年/4+(13*(月-2)-1)/5+日)%7
  或(百年%4*5天+年+年/4+(13*月-27)/5+日)%7
  或(百年%4*5天+年+年/4+(13*月-27-8+8)/5+日)%7
  或(百年%4*5天+年+年/4+(13*月-35+8)/5+日)%7
  或(百年%4*5天+年+年/4+(13*月+8)/5-7+日)%7
  即(百年%4*5天+年+年/4+(13*月+8)/5+日)%7

注:月从3月开始,即3月为3,。。12月为12,1月为13,2月为14
即:今年的 1月 2月是去年的“13月14月”
    今天的13月14月是明年的“ 1月 2月”
故可为:
unsigned char CalcWeekDay (unsigned int year, unsigned char month ,unsigned
char day )
{
    if ( month <= 2)
        {
           month +=12 ;//今年的 1月 2月是去年的“13月14月”
           year--;//注意“去年”2字   
        }
    return ( ((year/100)%4*5 + (year%100) + (year%100) /4  + ( 13 * month +
8 ) / 5   + day)% 7  );
}


unsigned char CalcWeekDay (unsigned int year, unsigned char month ,unsigned
char day )
{
    if ( month <= 2)
        {
           month |=4 ;//今年的 1月 2月是也是去年的“5月6月”的月表
           year--;//注意“去年”2字   
        }
    return ( ((year/100)%4*5 + (year%100) + (year%100) /4  + ( 13 * month +
8 ) / 5   + day)% 7  );
}



以上算法的推导过程我会在主题〈将星期算法进行到底〉中祥述的。。。

相关帖子>>>:
note.gif不需考虑闰年校验的星期算法

  • feedback.gif几种星期算法校验程序(60706字)hotpower[15次]2004-6-10 0:28:13
    /*--------------------------------------------------
               几种星期算法校验程序
    --------------------------------------------------*/
    #include <stdio.h>
    /*--------------------------------------------------
                   不用闰年调节的月星期表(基准2)
      算法采用   (星期=百年%4*5+年+年/4+月表+日)%7
    ---------------------------------------------------*/
    code unsigned char WeekTabT[] = {
      0,//去1月
      3,//去2月
      2,//今3月
      5,//今4月
      0,//今5月
      3,//今6月
      5,//今7月
      1,//今8月
      3,//今9月
      6,//今10月
      2,//今11月
      4 //今12月
    };

    /*--------------------------------------------------
                        闰年月星期表(基准0)
      算法采用   (星期=百年%4*5+年+年/4+月表+日+2)%7
    ---------------------------------------------------*/
    code unsigned char WeekTab[] = {
      (3 << 5) + 31,//1月//平年(4 << 5) + 31
      (6 << 5) + 29,//2月//平年(0 << 5) + 28
      (0 << 5) + 31,//3月//以此为基准0
      (3 << 5) + 30,//4月
      (5 << 5) + 31,//5月
      (1 << 5) + 30,//6月
      (3 << 5) + 31,//7月
      (6 << 5) + 31,//8月
      (1 << 5) + 30,//9月
      (4 << 5) + 31,//10月
      (0 << 5) + 30,//11月
      (2 << 5) + 31 //12月
    };

    /*--------------------------------------------------
                        平年月星期表(基准2)
      算法采用   (星期=百年%4*5+年+年/4+月表+日)%7
    ---------------------------------------------------*/
    code unsigned char WeekTabX[] = {//平年月星期表
      (6 << 5) + 31,//1月//闰年(5 << 5) + 31
      (2 << 5) + 28,//2月//闰年(1 << 5) + 29
      (2 << 5) + 31,//3月//以此为基准2
      (5 << 5) + 30,//4月
      (0 << 5) + 31,//5月
      (3 << 5) + 30,//6月
      (5 << 5) + 31,//7月
      (1 << 5) + 31,//8月
      (3 << 5) + 30,//9月
      (6 << 5) + 31,//10月
      (2 << 5) + 30,//11月
      (4 << 5) + 31 //12月
    };

    /*------------------------------------------------------------------------------
    ----------
                                    2000年~2099年星期算法
    --------------------------------------------------------------------------------
    ---------*/
    unsigned char WeekDay20(unsigned char y, unsigned char m, unsigned char d)
    {
    unsigned char week, day;
      day = WeekTab[m - 1];//月表
      week = day >> 5;//月星期数
      day &= 0x1f;//月天数
      if ((m < 3) && (y & 0x03)){//平年
        if (m == 2) day--;//平年2月天数-1
        week++;//平年1月2月表+1
      }
      y = y + (y >> 2);//年+年/4
      week = (week +  y + d + 2) % 7;//(星期=年+年/4+月表+2日)%7
      return (week << 5) | day;//返回星期和月天数
    }

    /*------------------------------------------------------------------------------
    ----------
                                    0000年~9999年星期算法
    --------------------------------------------------------------------------------
    ---------*/
    unsigned char WeekDay(unsigned char c, unsigned char y, unsigned char m,
    unsigned char d)
    {
    unsigned char week, day;
      c &= 0x03;//百年%4
      c = c | (c << 2);//百年%4*5  (10Byte)
      day = WeekTab[m - 1];//月表
      week = day >> 5;//月星期数
      day &= 0x1f;//月天数
      if ((m < 3) && !((c == 0) | (y & ((y & 0x03) == 0)))){//平年
        if (m == 2) day--;//平年2月天数-1
        week++;//平年1月2月表+1
      }
      y = y + (y >> 2);//年+年/4   (7Byte)
      week = (week + c + y + d + 2) % 7;//(星期=百年%4*5+年+年/4+月表+日+2)%7
      return (week << 5) | day;//返回星期和月天数
    }

    /*------------------------------------------------------------------------------
    ----------
                                    0000年~9999年星期算法
    --------------------------------------------------------------------------------
    ---------*/
    unsigned char WeekT(unsigned char c, unsigned char y, unsigned char m, unsigned
    char d)
    {
    unsigned char week;
      week = WeekTabT[m - 1];//月表
      if (m <= 2){
        y--;
        if (y >= 99){//原年为0
          y = 99;//年变为99
          c--;//世纪-1
        }
      }
      c &= 0x03;//百年%4
      week = ((c | (c << 2)) + (y + (y >> 2)) + week + d) % 7;//(星期=百年%4*5+年+
    年/4+月表+日)%7
      return week;//返回星期
    }

    /*------------------------------------------------------------------------------
    ----------
                                    0000年~9999年星期算法
    --------------------------------------------------------------------------------
    ---------*/
    unsigned char WeekK(unsigned char c, unsigned char y, unsigned char m, unsigned
    char d)
    {
    unsigned char week;
      if (m <= 2){
        m |= 4;//1月2月同5月六月表
        y--;
        if (y >= 99){//原年为0
          y = 99;//年变为99
          c--;//世纪-1
        }
      }
      c &= 0x03;//百年%4
      week = ((c | (c << 2)) + (y + (y >> 2)) + (13 * m + 8)/ 5 + d) % 7;//(星期=百
    年%4*5+年+年/4+(13*月+8)/5+日)%7
      return week;//返回星期
    }

    /*------------------------------------------------------------------------------
    -----------*/
    unsigned char DayNumber(unsigned char c, unsigned char y, unsigned char m)
    {
    unsigned char dn;
      dn = WeekK(c, y, m + 1, 1) - WeekK(c, y, m, 1);//m+1=13表示明年的1月
      if (dn >= 0x80) dn += 7;//下月初是周日
      return dn + 28;//返回当月的最大天数
    }

    /*------------------------------------------------------------------------------
    ----------
                                    2000年~2099年星期算法
    --------------------------------------------------------------------------------
    ---------*/
    unsigned char WeekDayX20(unsigned char y, unsigned char m, unsigned char d)
    {
    unsigned char week, day;
      day = WeekTabX[m - 1];//月表
      week = day >> 5;//月星期数
      day &= 0x1f;//月天数
      if ((m < 3) && ((y & 0x03) == 0)){//闰年
        if (m == 2) day++;//闰年2月天数+1
        week--;//闰年1月2月表-1
      }
      y = y + (y >> 2);//年+年/4
      week = (week +  y + d) % 7;//(星期=年+年/4+月表日)%7
      return (week << 5) | day;//返回星期和月天数
    }

    /*------------------------------------------------------------------------------
    ----------
                                    0000年~9999年星期算法
    --------------------------------------------------------------------------------
    ---------*/
    unsigned char WeekDayX(unsigned char c, unsigned char y, unsigned char m,
    unsigned char d)
    {
    unsigned char week, day;
      c &= 0x03;//百年%4
      c = c | (c << 2);//百年%4*5
      day = WeekTabX[m - 1];//月表
      week = day >> 5;//月星期数
      day &= 0x1f;//月天数
      if ((m < 3) && ((c == 0) | (y & ((y & 0x03) == 0)))){//闰年
        if (m == 2) day++;//闰年2月天数+1
        week--;//闰年1月2月表-1
      }
      y = y + (y >> 2);//年+年/4
      week = (week + c + y + d) % 7;//(星期=百年%4*5+年+年/4+月表+日)%7
      return (week << 5) | day;//返回星期和月天数
    }

    unsigned char BcdToBin(unsigned char val)
    {
      val = (val >> 4) * 10 + (val & 0x0f);//将BCD码转换为10进制数
      return val;//返回10进制数
    }

    void main(void)
    {
    unsigned char c, y, m, d;
    unsigned char cx, yx, mx, dx;  
    unsigned char WDay, Week, Day;
    /*---------------------------------------------------------
         0001年1月1日 星期天
    ---------------------------------------------------------*/
      c    = 0x00;
      y    = 0x01;
      m    = 0x01;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      WDay = WeekDay(cx, yx, mx, dx);//取星期和月天数
      Week = WDay >> 5;//得到星期
      Day  = WDay & 0x1f;//得到最大月天数
    /*---------------------------------------------------------
         0001年1月1日 星期天
    ---------------------------------------------------------*/
      c    = 0x00;
      y    = 0x01;
      m    = 0x01;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      WDay = WeekDayX(cx, yx, mx, dx);//取星期和月天数
      Week = WDay >> 5;//得到星期
      Day  = WDay & 0x1f;//得到最大月天数
    /*---------------------------------------------------------
         1918年1月21日 星期一
    ---------------------------------------------------------*/
      c    = 0x19;
      y    = 0x18;
      m    = 0x01;
      d    = 0x21;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      WDay = WeekDay(cx, yx, mx, dx);//取星期和月天数
      Week = WDay >> 5;//得到星期
      Day  = WDay & 0x1f;//得到最大月天数
    /*---------------------------------------------------------
         1918年1月21日 星期一
    ---------------------------------------------------------*/
      c    = 0x19;
      y    = 0x18;
      m    = 0x01;
      d    = 0x21;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      WDay = WeekDayX(cx, yx, mx, dx);//取星期和月天数
      Week = WDay >> 5;//得到星期
      Day  = WDay & 0x1f;//得到最大月天数
    /*---------------------------------------------------------
         9999年12月31日 星期天
    ---------------------------------------------------------*/
      c    = 0x00;
      y    = 0x01;
      m    = 0x01;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      WDay = WeekDay(cx, yx, mx, dx);//取星期和月天数
      Week = WDay >> 5;//得到星期
      Day  = WDay & 0x1f;//得到最大月天数
    /*---------------------------------------------------------
         9999年12月31日 星期天
    ---------------------------------------------------------*/
      c    = 0x00;
      y    = 0x01;
      m    = 0x01;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      WDay = WeekDayX(cx, yx, mx, dx);//取星期和月天数
      Week = WDay >> 5;//得到星期
      Day  = WDay & 0x1f;//得到最大月天数
    /*---------------------------------------------------------
         2004年6月18日 星期五
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x04;
      m    = 0x06;
      d    = 0x18;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      WDay = WeekDay20(yx, mx, dx);//取星期和月天数
      Week = WDay >> 5;//得到星期
      Day  = WDay & 0x1f;//得到最大月天数
    /*---------------------------------------------------------
         2004年6月18日 星期五
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x04;
      m    = 0x06;
      d    = 0x18;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      WDay = WeekDayX20(yx, mx, dx);//取星期和月天数
      Week = WDay >> 5;//得到星期
      Day  = WDay & 0x1f;//得到最大月天数
    /*---------------------------------------------------------
         2018年3月8日 星期四
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x18;
      m    = 0x03;
      d    = 0x08;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      WDay = WeekDay20(yx, mx, dx);//取星期和月天数
      Week = WDay >> 5;//得到星期
      Day  = WDay & 0x1f;//得到最大月天数
    /*---------------------------------------------------------
         2018年3月8日 星期四
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x18;
      m    = 0x03;
      d    = 0x08;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      WDay = WeekDayX20(yx, mx, dx);//取星期和月天数
      Week = WDay >> 5;//得到星期
      Day  = WDay & 0x1f;//得到最大月天数
    /*---------------------------------------------------------
         2099年12月31日 星期四
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x99;
      m    = 0x12;
      d    = 0x31;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      WDay = WeekDay20(yx, mx, dx);//取星期和月天数
      Week = WDay >> 5;//得到星期
      Day  = WDay & 0x1f;//得到最大月天数
    /*---------------------------------------------------------
         2099年12月31日 星期四
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x99;
      m    = 0x12;
      d    = 0x31;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      WDay = WeekDayX20(yx, mx, dx);//取星期和月天数
      Week = WDay >> 5;//得到星期
      Day  = WDay & 0x1f;//得到最大月天数
    /*---------------------------------------------------------
         2000年1月18日 星期二
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x00;
      m    = 0x01;
      d    = 0x18;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekT(cx, yx, mx, dx);//取星期
    /*---------------------------------------------------------
         2000年1月18日 星期二
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x00;
      m    = 0x01;
      d    = 0x18;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
    /*---------------------------------------------------------
         1999年12月31日 星期五
    ---------------------------------------------------------*/
      c    = 0x19;
      y    = 0x99;
      m    = 0x12;
      d    = 0x31;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekT(cx, yx, mx, dx);//取星期
    /*---------------------------------------------------------
         1999年12月31日 星期五
    ---------------------------------------------------------*/
      c    = 0x19;
      y    = 0x99;
      m    = 0x12;
      d    = 0x31;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2000年1月1日 星期六
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x00;
      m    = 0x01;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekT(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2000年1月1日 星期六
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x00;
      m    = 0x01;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2000年2月1日 星期二
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x00;
      m    = 0x02;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2000年3月1日 星期三
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x00;
      m    = 0x03;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2000年4月1日 星期六
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x00;
      m    = 0x04;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2000年12月31日 星期六
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x00;
      m    = 0x12;
      d    = 0x31;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2001年2月1日 星期四
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x01;
      m    = 0x02;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2001年3月1日 星期四
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x01;
      m    = 0x03;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2002年2月1日 星期五
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x02;
      m    = 0x02;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2002年3月1日 星期五
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x02;
      m    = 0x03;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2003年2月1日 星期六
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x03;
      m    = 0x02;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2003年3月1日 星期六
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x03;
      m    = 0x03;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2004年2月1日 星期日
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x04;
      m    = 0x02;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2004年3月1日 星期一
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x04;
      m    = 0x03;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2005年2月1日 星期二
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x05;
      m    = 0x02;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
    /*---------------------------------------------------------
         2005年3月1日 星期二
    ---------------------------------------------------------*/
      c    = 0x20;
      y    = 0x05;
      m    = 0x03;
      d    = 0x01;
      cx   = BcdToBin(c);//百年
      yx   = BcdToBin(y);//年
      mx   = BcdToBin(m);//月
      dx   = BcdToBin(d);//日
      Week = WeekK(cx, yx, mx, dx);//取星期
      Day  = DayNumber(cx, yx, mx);//取月最大天数
      while(1);
    }
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条