蔡勒公式  蔡勒(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++计算星期几内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

蔡勒公式 java,C/C++根据年月日计算星期几(蔡勒公式篇)相关推荐

  1. Gym 101206L Daylight Saving Time 根据年月日计算星期

    题意: [3月的第二个周日02:00:00 , 3月的第二个周日03:00:00) 这个区间都不是PST或PDT,[11月的第一个周日01:00:00 , 11月的第一个周日02:00:00) 这个区 ...

  2. Java工具-根据出生年月日计算出年龄

    我不写代码,我只是代码的搬运工 package com.example.demo.test.时间; import java.text.SimpleDateFormat; import java.uti ...

  3. C# 根据年月日计算星期几

    基姆拉尔森公式 基姆拉尔森公式可以用来计算某年某月某日是星期几,下面是使用C#进行演示的代码: using System; using System.Collections.Generic; usin ...

  4. 使用C语言根据年月日求星期(基姆拉尔森计算公式)。

    题目 题目: 根据年月日求星期. 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步.--来自考研路上的lwj 一.解题思路 思路: 本题主要使用这个算法求出把算法代入程序即可: 基姆拉尔 ...

  5. 【蔡勒公式 】根据给定的年月日求出对应星期几

    蔡勒公式 蔡勒(Zeller)公式,是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几.时间复杂度:O(1).具体的在红书P229有. 若要计算的日期是在1582年10月4日或之前,公 ...

  6. c语言求某年某月1日是星期几,蔡勒(Zeller)公式:根据日期推算是星期几

    Zeller's Congruence: w=y + [y/4] + [c/4] - 2c + [26(m+1)/10] + d - 1 公式中的符号含义如下: w:星期: w对7取模得:0-星期日, ...

  7. 蔡勒(Zeller)公式:是一个计算星期的公式。

    蔡勒(Zeller)公式:是一个计算星期的公式. 随便给一个日期,就能用这个公式推算出是星期几. 蔡勒公式如下: W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / ...

  8. execel公式 java工具,MyExcel(Excel Java工具包) v3.0.0下载

    MyExcel是一款集导入.导出.加密Excel等多项功能的Java工具包. 导入:提供简便的API,读取Excel内容,并转化为List< Bean >. 导出:可快速导出海量数据的简单 ...

  9. java操作当前日期的年月日

    java获取当前日期的年月日: Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); System.out ...

最新文章

  1. 如何对付费广告流量进行标记?
  2. MFC六大核心机制之二:运行时类型识别(RTTI)
  3. jquery-ui-拖
  4. android 生成二维码_Java 生成二维码实战
  5. android定时切换活动,安卓手机如何定时自动切换情景模式 (全文)
  6. Linux光标移动异常
  7. php 月份查询生日_PHP判断日期(生日)格式是否正确合法的方法
  8. Codeforces Round #531 F. Elongated Matrix (状压dp)
  9. android中数据统计,Android 友盟统计集成
  10. ubuntu vscode use clang-format google style
  11. ansys 定义变量(关联模型)
  12. 读书笔记:时间与精力管理:你的精力管理决定你的人生层次
  13. 总结输入法挡住输入框方案
  14. 计算机应用基础有必要学吗,计算机应用基础教学革新的必要性
  15. 域名和空间购买服务器系统,如何购买域名和空间?服务器有哪些类型?
  16. Ubuntu解决搜狗输入法乱码
  17. DSP TMS320C6000基础学习(5)—— 阅读DSP6713的Datasheet
  18. 使用 Haar 级联人脸检测
  19. 包子凑数-蓝桥杯真题 线性方程组求解(c++实现)
  20. 【Java】使用idea打jar包

热门文章

  1. Apollo PNC课程学习(Ⅰ)
  2. javascript基础——window对象(screen、history、location、navigator、window对象常用方法、window对象常用事件)
  3. 独到理解@Java概述
  4. 一文教会你风格迁移CycleGAN从入门到高阶再到最终成功魔改(附成功魔改代码)
  5. Logger 基本用法
  6. sublime text--你所不知道的12个秘密
  7. 我靠TikTok抖音赚到了人生第一个100w:这个风口行业,真的很赚钱
  8. 使用netty创建https服务器
  9. 浅谈 BI 分析师的定位、案例、成长
  10. 深度解读 | 饮食、肠道菌群与健康