蔡勒星期算法 c语言,C/C++根据年月日计算星期几(蔡勒公式篇)
蔡勒公式 蔡勒(Zeller)公式:是一个计算星期的公式。
随便给一个日期,就能用这个公式推算出是星期几。
蔡勒公式如下:
W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1
或者是:
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公式中的符号含义如下:
w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世纪-1(前两位数)
y:年(后两位数)
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日 [ ]代表取整,即只要整数部分。
下面以中华人民共和国成立100周年纪念日那天(2049年10月1日)来计算是星期几,过程如下:
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=49+[49/4]+[20/4]-2×20+[26×(10+1)/10]+1-1
=49+[12.25]+5-40+[28.6]
=49+12+5-40+28
=54 (除以7余5)
即2049年10月1日(100周年国庆)是星期五。
再比如计算2013年3月7日,过程如下:
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=13+[13/4]+[20/4]-2*20+[26*(3+1)/10]+7-1
=-3 (除以7余4,注意对负数的取模运算!)
示例代码:
int ReturnWeekDay( unsigned int iYear, unsigned int iMonth, unsigned int iDay )
{
int iWeek = 0;
unsigned int y = 0, c = 0, m = 0, d = 0;
if ( iMonth == 1 || iMonth == 2 )
{
c = ( iYear - 1 ) / 100;
y = ( iYear - 1 ) % 100;
m = iMonth + 12;
d = iDay;
}
else
{
c = iYear / 100;
y = iYear % 100;
m = iMonth;
d = iDay;
}
iWeek = y + y / 4 + c / 4 - 2 * c + 26 * ( m + 1 ) / 10 + d - 1; //蔡勒公式
iWeek = iWeek >= 0 ? ( iWeek % 7 ) : ( iWeek % 7 + 7 ); //iWeek为负时取模
if ( iWeek == 0 ) //星期日不作为一周的第一天
{
iWeek = 7;
}
return iWeek;
}
总结
到此这篇关于C/C++根据年月日计算星期几(蔡勒公式篇)的文章就介绍到这了,更多相关C/C++计算星期几内容请搜索WEB开发者以前的文章或继续浏览下面的相关文章希望大家以后多多支持WEB开发者!
暂无相关信息
蔡勒星期算法 c语言,C/C++根据年月日计算星期几(蔡勒公式篇)相关推荐
- 蔡勒公式 java,C/C++根据年月日计算星期几(蔡勒公式篇)
蔡勒公式 蔡勒(Zeller)公式:是一个计算星期的公式. 随便给一个日期,就能用这个公式推算出是星期几. 蔡勒公式如下: W = [C/4] - 2C + y + [y/4] + [13 * (M ...
- Gym 101206L Daylight Saving Time 根据年月日计算星期
题意: [3月的第二个周日02:00:00 , 3月的第二个周日03:00:00) 这个区间都不是PST或PDT,[11月的第一个周日01:00:00 , 11月的第一个周日02:00:00) 这个区 ...
- c语言编码2018新年快乐,c语言代码,输入年月日计算离2018年春节(2019年2月5日)还有多少天?...
c语言代码,输入年月日计算离2018年春节(2019年2月5日)还有多少天? 关键字:c语言 更新时间:2018-11-12 04:50:55 136次访问 这个可以用C标准函数实现 #include ...
- 求星期算法c语言程序,C语言根据指定日期计算是星期几
C语言根据日期判断星期几(使用基姆拉尔森计算公式) 算法如下: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数 ...
- feedback算法C语言,Learner Reviews Feedback for 计算导论与C语言基础 Course | Coursera
1 - 25 sur 374 Avis pour 计算导论与C语言基础 Filled StarFilled StarFilled StarStarStar par Wan K• 16 août 201 ...
- c语言日期星期程序,C语言程序设计: 输入年月日 然后输出是星期几
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include main() { int year,month,day=0,a,b,week,c,i,sum=0,days,d; printf(&quo ...
- c语言程序设计日历推后几天是星期几,C语言程序设计: 输入年月日 然后输出是星期几...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include main() { int year,month,day=0,a,b,week,c,i,sum=0,days,d; printf(&quo ...
- c语言输入数字变成星期几,C语言程序设计: 输入年月日 然后输出是星期几
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include main() { int year,month,day=0,a,b,week,c,i,sum=0,days,d; printf(&quo ...
- c语言在程序中显示现在星期几,C语言程序设计: 输入年月日 然后输出是星期几...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include main() { int year,month,day=0,a,b,week,c,i,sum=0,days,d; printf(&quo ...
- C语言代码输出星期几,C语言程序设计: 输入年月日 然后输出是星期几
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include main() { int year,month,day=0,a,b,week,c,i,sum=0,days,d; printf(&quo ...
最新文章
- mysql实验报告四_实验报告四
- Cosmos的基石:IL2CPU编译器--.net/C#开源操作系统学习系列三
- centos 打包某个目录_Linux目录基础,带你了解Linux神秘面纱
- 【前沿视点】Web Lab——鼓舞人心的谷歌 Chrome 实验室
- hust1346(两个线段的最近距离和最小距离)
- ActionScript3学习笔记2-包
- matlab图像分类器,Matlab 基于svm的图像物体分类
- 【Linux】CentOS 7 安装Redis
- 生成并绘制图像的直方图
- java 枚举_深入理解Java枚举
- 启动报错:Error creating bean with name ‘XXX’ defined in...
- NMEA 0183协议解析
- vb.net 功能f8键事件_UG软件F8快捷键和笔记本电脑F8快捷键冲突的解决方法
- 学习PLC要学哪些知识?
- Tianchi big data competition天池大数据挑战(CV场)
- matlab中 概率密度估计ksdensity,k-s检验kstest和kstest2(单/双样本检验数据是否符合某种分布)
- 货币的一种互联网体系架构
- oracle 工具ODM,oracle ODM 数据挖掘笔记
- 利用python查询电脑配置_干货|利用Python将地址转换为经纬度坐标
- 判断Linux环境是否装了NCCL,Ubuntu 16.04安装NCCL 2