博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蔡勒公式(根据日期计算出周几)
阅读量:4156 次
发布时间:2019-05-26

本文共 988 字,大约阅读时间需要 3 分钟。

蔡勒公式(根据日期计算出周几)

随便给一个日期,就能用这个公式推算出是星期几。不过,公式只适合于1582年10月15日之后的情形(当时的罗马教皇将恺撒大帝制订的儒略历修改成格里历,即今天使用的公历)。

蔡勒公式:  W=[C / 4] - 2C + y + [y / 4] + [26(m + 1) / 10] + d - 1 (其中[ ]为取整符号)

  • W是所求日期的星期数.
    •    如果求得的数大于7,可以直接对7取余,不过周日就输出为0了。
    •    如果求得的数小于0,可以加上7的倍数,直到结果大于零小于7为止
  • C是公元年份的前两位数字,
  • y是已知公元年份的后两位数字;
  • m是月数,
  • d是日数.
  • 方括[ ]表示只截取该数的整数部分。

所求的月份如果是1月或2月,则应视为前一年的13月或14月.

所以公式中m 的取值范围不是1-12,而是3-14.

代码

#include 
int Change(int year, int month, int day) //根据日期判断出星期几{ if(month == 1 || month == 2) { month += 12; year--; } int c = year / 100; int y = year % 100; int m = month; int d = day; int W = c / 4 - 2 * c + y + y / 4 + 26 * (m + 1) / 10 + d - 1; int ans; if(W < 0) ans = (W + (-W / 7 + 1) * 7) % 7; else ans = W % 7; if(ans == 0) //星期7而不是星期0 return ans + 7; return ans;}int main(){ int year, month, day; while(scanf("%d %d %d", &year, &month, &day) != EOF) printf("星期%d\n\n", Change(year, month, day)); return 0;}

转载地址:http://cnkxi.baihongyu.com/

你可能感兴趣的文章
127个超级实用的JavaScript 代码片段,你千万要收藏好(中)
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(下)
查看>>
Flex 布局教程:语法篇
查看>>
年薪50万+的90后程序员都经历了什么?
查看>>
2019年哪些外快收入可达到2万以上?
查看>>
【JavaScript 教程】标准库—Date 对象
查看>>
前阿里手淘前端负责人@winter:前端人如何保持竞争力?
查看>>
【JavaScript 教程】面向对象编程——实例对象与 new 命令
查看>>
我在网易做了6年前端,想给求职者4条建议
查看>>
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
查看>>
RQP-DEF-0177
查看>>
MySQL字段类型的选择与MySQL的查询效率
查看>>
Java的Properties配置文件用法【续】
查看>>
JAVA操作properties文件的代码实例
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>
日志框架学习2
查看>>