计算当天为星期几

想知道某个日期是星期几时,不一定要打开日历才能找出来。只要学会以下这个方程式,任何日期都可以算出是星期几。

首先,让我们先看看以下这三个表格里面的代码。

| 星期 | 代码 |
| 星期日 | 0 |
| 星期一 | 1 |
| 星期二 | 2 |
| 星期三 | 3 |
| 星期四 | 4 |
| 星期五 | 5 |

| 星期六 | 6 |



| 月份 | 代码 |
| 一月 | 6 |
| 二月 | 2 |
| 三月 | 2 |
| 四月 | 5 |
| 五月 | 0 |
| 六月 | 3 |
| 七月 | 5 |
| 八月 | 1 |
| 九月 | 4 |
| 十月 | 6 |
| 十一月 | 2 |

| 十二月 | 4 |



| 闰年 | 代码 |
| 2000 | 0 |
| 2004 | 5 |
| 2008 | 10 |
| 2012 | 15 |
| 2016 | 20 |
| 2020 | 25 |

| 2024 | 30 |

首先,星期日到星期六分别用0-6来表示,而年份的话以2000年为基年,每加一年则+1(例:2001年的代码为0+1=1),而到了闰年则再+1(例:2004年的代码为0+4+1=5;计算2008年的代码则是用2004的代码5+4+1=10)以此类推。在这里比较困难的只是月份的代码,这里必须背的,将这些代码牢牢地记在脑海里。

第二点要记住的就是,因为一个礼拜有7天,凡是7的倍数都可以被拿掉。例如2008年的代码是10,拿掉7则剩下3;2024年的代码是30,拿掉7x4=28则剩下30-28=2。

大专栏  计算当天为星期几期几。">▼以下图为例,我们这次要计算2069年7月20号是星期几。

7-20-2069
5 + 6 + 2 = 13
-7
___
6

星期六


为了算出2069年的代码,我们将69拆分成68+1。因为68是闰年,我们除以4可以得出2068是2000年后的第17个闰年。以17乘5我们得出85,再加上1我们可以得出2069年的代码为86。

(简地来说就是69=68+1=(4x17)+1。因为闰年要+1,所以变成[(4+1)x17]+1=86。)

接下来,因为7的倍数可以被拿掉,所以86除以7我们得出余数为2;相同地,20除以7的余数是6。然后根据上面的表格我们知道7月的代码是5。

要计算出某个日期是星期几,我们只需要将年份的代码+月份的代码+日期就可以算出了!首先我们用5+6+2=13,拿掉7后我们最终得出6这个数字。也就是说2069年7月20号是星期六!

看了以上的例子,相信这些简单的加法应该不会难倒你吧!接下来,我们要提醒大家,如果要计算的日期是闰年的1月或2月的话,此时代码就要-1。为了让大家更能了解,就让我们一起来算一算2004年2月18号是星期几吧。



2-18-2004
2 + 4 + 5 = 11

-7
-----
4-1
星期三


以上的算法只适用于2000年到2099年之间的任一日期。如果要算1999年之前或2099年之后的话,只需要再加上以下代码就可以算出正确的答案了。



| 年份 | 代码 |
| 2300到2399 | +1 |
| 2200到2299 | +3 |
| 2100到2199 | +5 |
| 2000到2099 | 0 |
| 1900到1999 | +1 |
| 1800到1899 | +3 |
| 1700到1799 | +5 |
| 1600到1699 | 0 |
| 1500到1599 | +1 |
| 1400到1499 | +3 |
| 1300到1399 | +5 |

| 1200到1299 | 0 |

这些数学小技巧是不是很神奇呢?尤其是最后一个,只需要加减乘除就可以算出某个日期是星期几。学校里完全没有教过这样的方式,也许大家可以拿去和数学老师讨论一下,说不定会被称赞呢。虽然数学还是有很多必须理解的观念,但多了一些小技巧,至少在计算上会快一点,现实生活中偶尔用到也是很实用的。赶快自己动手算一算,然后把这些学校没教的数学分享出去让大家知道吧!

原文地址:https://www.cnblogs.com/lijianming180/p/12275737.html

时间: 2024-11-05 21:34:28

计算当天为星期几的相关文章

计算当天起始点和结束点时间戳 去当天的数据

/* *+ ------------------------------- * 计算当天起始点和结束点时间戳 去当天的数据 *+ ------------------------------ */ $daybegin=strtotime(date("Ymd")); $dayend=$begin+86400; $query = "SELECT * FROM `info` WHERE addtime<$dayend AND addtime>$daybegin"

根据日期获得当天是星期几

如今在程序时代,什么都用程序来解决.那当然是很方便的.因此,你问我2003年10月1日是星期几,我很可能就会直接用程序来告诉你. echo date('w',strtotime('2003-10-1')); 但事实上,我们也都知道,PHP的date函数是有时间范围区间的,即只能从1970~2038年,因此在这个区间范围之外的算法都是不准的.那倒 底怎么算呢?其实是有一个公式的: 蔡 勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 公 式中的符号含义

php 计算当天凌晨时间戳 以及获取其他常用时间戳

php 计算当日凌晨时间戳 以及获取其他常用时间戳(持续补充中...) 获取当天凌晨时间戳: echo strtotime(date('Y-m-d')); 以下再列举一些获取其他常用时间戳的方法 获取明天凌晨的时间戳 echo strtotime(date('Y-m-d',strtotime('+1 day'))); 获取指定时间字符串的时间戳: echo strtotime('2012-11-2'); echo strtotime('2012-11-2 00:00:00'); echo str

PostgreSQL 当月最后一天的工作日 , 计算日期是星期几

可以用pg自带函数select extract(dow from current_date),之所以没用主要是展示一下通过数学方法计算日期的原理. drop function if exists getDateWeek(date);drop function if exists intervalDay(date);drop function if exists getMonMaxDay(integer,integer);drop function if exists getMonMaxDate(

怎么样计算今天是星期几

算法如下: 基姆拉尔森计算公式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来代入公式计算. 代码如下: //y-年,m-月,d-日期  string CaculateWeekDay(int y,int m, int d)  {  if(m==1) m=13

javascript 字符串转日期 获取当天是星期几

服务器传回日期字符串 格式如下: 2015-01-20 12:03:12 2015-01-19 19:10:00 2015-01-19 12:00:00 2015-01-19 08:41:00 2015-01-16 12:23:46 要求 判断该日期是星期几 转成如下格式: 首先把字符串转换成日期格式 查了一些方法 下面这个最简单 var str = '2015-01-20 12:03:12'; dateStr = dateStr.replace(/-/g,'/'); var date = ne

&lt;swustoj&gt;?id=78 计算生日是星期几

链接http://acm.swust.edu.cn/problem/0078/ #include <stdio.h> bool LeapYear(int year) { return((year%400==0)||(year%100!=0&&year%4==0)); } int main() { int i; int year,month,day; int sum; int monthday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}

(hdu 简单题 128题)hdu 2005 第几天(计算当天是该年的第几天)

题目: 第几天? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 89641    Accepted Submission(s): 33727 Problem Description 给定一个日期,输出这个日期是该年的第几天. Input 输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,

输入一个日期,判断这个日期在一年中是哪一天,是星期几,计算两个日期间的天数,使用字符串输出日期

之前写了一个博文(http://blog.csdn.net/shiwazone/article/details/45053739)是用基本函数实现的,这次使用类的设计方法,也就是面向对象的方法改写一下,并加入了日期转换成字符串的实现.这里的程序也可以解决编程珠玑习题3.4的问题. #include"calendar.h" int main() { Time t; t.initialTime(); t.Show(); t.StrShow(); Time t1; t1.initialTim