日期求星期的算法及闰年来历.doc_第1页
日期求星期的算法及闰年来历.doc_第2页
日期求星期的算法及闰年来历.doc_第3页
日期求星期的算法及闰年来历.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

日期算法/*星期计算公式(年+年/4+年/400-年/100-年基数+月基数+日)/7余星期几注:式中分数均取整年基数:平年1,闰年2,月基数:1、平年:一月0, 二月3, 三月3, 四月6, 五月1, 六月4, 七月0, 八月3, 九月5, 十月0, 十一月3, 十二月5.2、闰年:一月0, 二月3, 三月4, 四月0, 五月2, 六月5, 七月0, 八月3, 九月6, 十月1, 十一月4, 十二月6.如:1949年10月1日是星期几? (1949+1949/4+1949/400-1949/100-1+0+1)/7(1949+487+4-19-1+0+1)/73456即该日为星期六。增加几个函数,用于计算星期*/闰年的判断方法:整百的年份,能被4整除但不能被400整除的,不是闰年。也就是说2000年是闰年,1900年、2100年等不是闰年。地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,故四年于2月加1天,使当年的历年长度为366日,这一年就为闰年。现行公历中每400年有97个闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来,因此,每四百年中要减少三个闰年。所以规定,公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的,虽然是4的倍数,也是平年,这就是通常所说的:四年一闰,百年不闰,四百年再闰。 例如,2000年是闰年,1900年则是平年。整百的年份,能被4整除但不能被400整除的,不是闰年。也就是说2000年是闰年,1900年、2100年等不是闰年。地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,故四年于2月加1天,使当年的历年长度为366日,这一年就为闰年。现行公历中每400年有97个闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来,因此,每四百年中要减少三个闰年。所以规定,公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的,虽然是4的倍数,也是平年,这就是通常所说的:四年一闰,百年不闰,四百年再闰。 例如,2000年是闰年,1900年则是平年。使用C语言实现如下INT8U is_leap_year( INT8U x ) /判断是否为闰年INT32U year;year = ( x / 16 * 10 ) + ( x & 15 ) + 2000;if( ( year % 4 = 0 & year % 100 != 0 ) | year % 400 = 0 )return 1;elsereturn 0;INT8U jsxq( INT8U year, INT8U month, INT8U day )INT8U flag = 0;/标识所给定的年份是否为闰年INT8U year_j =0, month_j=0;/表示年基和月基INT8U month_temp;/表示转换为十进制的月份INT32U year_temp;/表示转换为十进制的年份INT8U day_temp;/表示转换为十进制的日期 INT8U xq;/表示最后计算结果的星期year_temp = ( year / 16 * 10 ) + ( year & 15 ) + 2000;month_temp = (month / 16 * 10)+( month & 15 );day_temp = (day / 16 * 10)+( day & 15 );flag = is_leap_year( year );if( flag = 0)year_j = 1;switch(month_temp)case 1:case 7:case 10:month_j = 0;break;case 2:case 3:case 8:case 11:month_j = 3;break;case 4:month_j = 6;break;case 5: month_j = 1;break;case 6:month_j = 4;break;case 9:case 12:month_j = 5;break;default:break;elseyear_j = 2;switch(month_temp)case 1:case 4:case 7:month_j = 0;break;case 2:case 8:month_j = 3;break;case 3:case 11:month_j = 4;break;case 5: month_j = 2;break;case 6:month_j = 5;break;case 9:case 12:month_j = 6;break;case 10:month_j = 1;break;default:break;/(年+年/4+年/400-年/100-年基数+月基数+日)/7余星期几/注:式中分数均

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论