计算任何一天是星期几的几种算法

计算任何一天是星期几的几种算法
一:常用公式

W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D

Y是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。

二:蔡勒(Zeller)公式

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

公式中的符号含义如下,w:星期;c:世纪;y:年(两位数); m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。

相比于通用通用计算公式而言,蔡勒(Zeller)公式大大降低了计算的复杂度。

三:对蔡勒(Zeller)公式的改进

相比于另外一个通用通用计算公式而言,蔡勒(Zeller)公式大大降低了计算的复杂度。不过,笔者给出的通用计算公式似乎更加简洁(包括运算过程)。现将公式列于其下:
W=[y/4]+r (y/7)-2r(c/4)+m’+d

公式中的符号含义如下,r ( )代表取余,即只要余数部分;m’是m的修正数,现给出1至12月的修正数1’至12’如下:(1’,10’)=6;(2’,3’,11’)=2;(4’,7’)=5;5’=0;6’=3;8’=1;(9’,12’)=4(注意:在笔者给出的公式中,y为润年时1’=5;2’=1)。其他符号与蔡勒(Zeller)公式中的含义相同。

四:基姆拉尔森计算公式

这个公式名称是我给命名的,哈哈希望大家不要见怪。

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:日。在参数都只传入相应的整数
    // ********************************************/
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; 
}

int main()
{
 int y, m, d;
 cout << "输入日期:如 2012-03-30" << endl;
 scanf("%d-%d-%d", &y, &m,&d);
 cout << str_week(y, m, d) << endl;
}

原文地址:http://blog.csdn.net/whz_zb/article/details/7425260
  • 10
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
计算机专业的毕业实习周记(1)全文共5页,当前为第1页。计算机专业的毕业实习周记(1)全文共5页,当前为第1页。计算机专业的毕业实习周记 计算机专业的毕业实习周记(1)全文共5页,当前为第1页。 计算机专业的毕业实习周记(1)全文共5页,当前为第1页。 计算机专业的毕业实习周记(一) 离开了学校,告别了学生生涯,开始了一直追寻的工作生活.虽然不是第一次过上班族的生活,但还是会有兴奋与紧张感.第一周的工作生活过的总是充满好奇的,可是却也让自己感到了不小的压力,刚开始上班,老板并没有让我做什么具体的工作,来的第一天和老板一起去了几个学校,算是见识一下社会中的交际吧.因为最近在为县里的几个学校机房布线,后来的几天又跑了几个学校,但都不是真的做些什么,都是去看看现场,跑了很远的路,看了好几个地方,回来后开始画布线图了.当刚开始还会按照学校作业那样一板一眼的想着该怎么开始,当看别人的工作后才觉得生活讲求的是效率.第一周都只是在了解工作的环境和工作内容,对于什么都没经历过的我而言,工作的内容让我充满了好奇,可是当定下心来审视工作环境时,不免又有那么点的失望了.每天坐在电脑前看着同事进进出出的忙碌,似乎到是有点羡慕,自己什么时候也可以像他们一样独当一面呢? 计算机专业的毕业实习周记(二) 第二周的工作渐渐的开始步入正轨了,现在也开始做一些事了,很少向外跑,因为现在才发觉自己对这个城市认识的太少了.好多的路都是不认识的.现在大部分的时间都是在店里做些事.当什么都不做时,总高傲的以为自己什么都会,可是当真的做的时候才发觉原来自己什么都不会,理论与现实的差距真的很大.这星期做的做多的一件事就是装系统了,当自己真的装时才发现学校的知识也太死板了,曾经装系统时因为都是我们自己的电脑,买来时都是分好区的,从没想过分区的事,当一台裸机放在我面前时竟然是别人教我怎么完整的装系统时,自计算机专业的毕业实习周记(1)全文共5页,当前为第2页。计算机专业的毕业实习周记(1)全文共5页,当前为第2页。己真的觉得好丢.还有一件事就是做网线,说起做网线可是我的强项,可是在这里却让我吃力闭门羹,一位客户来要10米的网线,还要做好水晶头,我特地问了句他是连接什么设备的,他说是连电脑的.我就做起了交叉线,当做完后同事过来看了测试后,竟然用充满鄙视的眼神看了我一下后,剪掉了交叉线的另一头.然后就是一句线都做错了,当时真的是说的我一头雾水,后来知道了,这里用户用到都是交换机与电脑相连,说连电脑也并非我们说的电脑互连,而是连接电脑上网的,不过这个打击真的还是让我到现在一直都心有余悸,不是因为我把网线做错,而是让我突然有种很失望和心寒的感觉,心寒的是被别人鄙视的感觉,因为毕竟在这里自己的身份是一个大学生,别人都以为大学生应该知道的很多,懂得很多,可是这样简单的都不会时,就更加的鄙视了.失望的是自己所知道的在这里的工作中可以用到真的是少之又少,这里根本就不会用到那些自己认为很感兴趣的东西了.可是我并不会因此而放弃、而心灰意冷,虽然觉得自己有点难过,不过还是不得不佩服这里的同事,他们确实真的会很多很多的技能,能力也是很强很强的,对于打印机、传真机、复印机的维修,校园多媒体的架设,校园广播的调制,网络布线的实施自己要学的还有很多很多.十一和中秋都在这一周了,几个月前就说今年的十一一定要在家里坐着看祖国60周年大阅兵,可是上班后才发现生活的节奏不在是自己想怎样就怎样了,十一也在加班.工作的纪律,工作的基本责任都是曾经的我所不曾有过的感受.现在渐渐的意境适应了工作的生活,也很清楚自己的差距,一定要在实习的时间中好好的努力. 计算机专业的毕业实习周记(三) 半个月的时间过的很快,每天这样起床、上班、下班,再上班、再下班、然后睡觉;时间过的不知道是该说充实还是荒废.渐渐的忙碌了,忙碌的时间过的是那计算机专业的毕业实习周记(1)全文共5页,当前为第3页。计算机专业的毕业实习周记(1)全文共5页,当前为第3页。么的快.现在已经开始步入正轨,正式的接受了所有该做的和需要做的工作内容了.其实店里的工作真的很杂,只要涉及到计算机方面的所有事物都得去了解和掌握,可是了修电脑、装打印机以前对于这些什么打印机、传真机、复印机也都只是知道有什么用而已,至于怎么用也不是很清楚,更别说是里面的组件了,什么是鼓组件、什么是传感器、还要加粉就更不知道了实习周记.还有一些各种高科技产品的配件也是闻所未闻的.在这里工作以后也不得不逼迫自己尽最大的努力去弄清这些东西,这样说来,真的也见识到了很多.在学校里的时候从来都没有想过自己有一天会修电脑,可是社会是容不得你说不会的,当把主机打开,真的不知道该从何开始,仔细的看着别人是怎么做的,然后在借助网络,慢慢的了解有关硬件维修的所有常用的方法.这几天有一批学校机房的坏机子要维修,因为

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值