`
isiqi
  • 浏览: 15997261 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

阅读更多
近日在论坛上看到有人在问星期算法,特别整理了一下,这些算法都是从网上搜索而来,算法的实现是我在项目中写的。希望对大家有所帮助。

一:常用公式

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来代入公式计算。

分享到:
评论

相关推荐

    JavaScript计算某一天是星期几的方法

    JavaScript计算某一天是星期几,文本框中是默认值 ,只要按此种格式输入日期时间,就可以推算出当天是星期几,一个简单的JS时间计算实例,运行本效果后,只需点击“计算”按钮即可显示效果,这样我们就能很快的知道...

    python实现某年某月是星期几

    该程序主要是完成判断某天是周几,输入一天的日期(2020-2-2)这种格式,会判断该天是周几,如果日期格式不对,会显示输入错误。

    计算机专业的毕业实习周记.docx

    在学校里的时候从来都没有想过自己有一天会修电脑,可是社会是容不得你说不会的,当把主机打开,真的不知道计算机专业的毕业实习周记全文共6页,当前为第3页。该从何开始,仔细的看着别人是怎么做的,然后在借助网络...

    计算机专业的毕业实习周记(1).docx

    在学校里的时候从来都没有想过自己有一天会修电脑,可是社会是容不得你说不会的,当把主机打开,真的不知道该从何开始,仔细的看着别人是怎么做的,然后在借助网络,慢慢的了解有关硬件维修的所有常用的方法.这几天...

    doomsday-battle:“ Doomsday”算法,用于查找给定日期的工作日,并以8种语言实现,以争夺谁最强!

    这一天(即2049年8月18日是18日) 月份代码(从一月到十二月为6、2、2、5、0、3、5、1、4、6、2、4) “世纪”代码(mod 4)(年份编号的前两位数字,即2014年为20) 代码分别是0、5、3、1,表示0、1、2、3(模4...

    java课程设计报告---万年历.doc

    " " " "2、定时提醒:用户可以针对某一天来添加,删除和编辑这一天的日程提醒 " "信息,当系统时间和提醒时间相吻合时,给出具有提示信息的对话框。 " "三、设计完成后提交的文件和图表 " "1.计算说明书部分 " ...

    JAVA万年历课程设计报告.doc

    算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以 前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一 日为星期几的数字再除以7得0换行,即可完整的输出该...

    Excel公式与函数大辞典.宋翔(带书签高清文字版).pdf

    3.3.4 WEEKDAY——返回当前日期是星期几 130 3.3.5 HOUR——返回小时数 131 3.3.6 MINUTE——返回分钟数 131 3.3.7 SECOND——返回秒数 132 3.4 文本与日期、时间格式间的转换 133 3.4.1 DATEVALUE——将文本...

    JAVA万年历课程设计报告(1).doc

    算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以 前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一 日为星期几的数字再除以7得0换行,即可完整的输出该...

    Excel函数活用范例大辞典(全新版).何先军.2015-2(带书签高清文字版).pdf

    015 计算公式结果的几种方法 20 016 使用【F9】键查看公式结果 21 017 批量复制公式——按【Ctrl+Enter】组合键 21 018 批量复制公式——按【Ctrl+D】组合键 23 019 批量复制公式——拖动控制柄 24 020 ...

    入门学习Linux常用必会60个命令实例详解doc/txt

    -s,--strip:用strip命令删除symbol table,只适用于第一及第二种使用格式。 -S,--suffix=后缀:自行指定备份文件的<后缀>。 -v,--verbose:处理每个文件/目录时印出名称。 --help:显示此帮助信息...

    C#全能速查宝典

    1.4.12 FirstDayOfWeek属性——获取或设置一周中的第一天 56 1.4.13 Format方法——格式化字符串 56 1.4.14 GETDATE函数——返回当前系统日期和时间 58 1.4.15 GetDayOfMonth方法——返回几号 59 1.4.16 ...

    antlr4权威指南

    使用ANTLR之后,我在一天之内就完成了整个编译器前端的开发工作,从而能够迅速开始处理真正的业务逻辑。从那时起,我就被它强大的功能所深深吸引。简而言之,ANTLR能够解决别的工具无法解决的问题。  软件改变了...

    C语言培训教程.doc

    1、Linux基础知识 课时:一星期(在本教程中,一星期不是五天,是七天。) Linux系统的优点,应用范围。 连Linux服务器的工具程序的使用(SecureCRT). Linux系统常用的命令。 telnet工具。 ftp工具。 ssh工具。 vi编辑...

    java自学之道

    2.18 第几天判断 2.19 从小到大输出数列 2.20 猴子吃桃问题 2.21 乒乓球比赛 2.22 求分数之和 2.23 求阶乘的和 2.24 递归求法 2.25 求不多于5的正整数 2.26 回文判断 2.27 星期判断 2.28 插数入数组 2.29 取整数的...

    asp.net知识库

    .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C# 2.0会给我们带来什么 泛型技巧系列:如何提供类型参数之间的转换 C#2.0 - Object Pool 简单实现 ...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例057 获取当前日期是星期几 72 实例058 获取当前年的天数 73 实例059 获取当前月的天数 74 实例060 取得当前日期的前一天 75 实例061 将日期格式化为指定格式 76 实例062 使用DateDiff方法获取日期时间 的间隔数 ...

Global site tag (gtag.js) - Google Analytics