小余

灵感源于交流,创新出自思考

导航

对任何一天是星期几算法的实现

Posted on 2008-04-17 12:50  小余(Yice)  阅读(1705)  评论(3编辑  收藏  举报

[这是我在CSDN上发表的文章,现在转移到CNBLOGS]

对于何一天是星期几算法的程序时间都比较简单,而在我自己的实际项目中采用的是基姆拉尔森计算公式,所以我在这里给出基姆拉尔森计算公式的C#的实现:

// ************************************************
 //  str_week
  //
  /// <summary>
  /// 返回谋年某月任意一天是星期几的描述

   /// </summary>

//y:年,m:月,d:日。在参数都只传入相应的整数
    // ********************************************/

private 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; 
}