精华内容
下载资源
问答
  • 前言 如果有这样的问题:如果y年m月d日是星期k,那么请问y1年m1月d1日是星期几?...基尔拉姆森公式:这个公式可以直接计算出那个日期星期几,但请注意!这类问题如果假设和真实情况不符的时候要记得换上偏移...

    前言

    如果有这样的问题:如果y年m月d日是星期k,那么请问y1年m1月d1日是星期几?

    思路

    • 首先如果询问的日期都在1970年之后的话,我们可以使用Excel直接计算。
    • Java的Calendar类,使用和Excel非常类似,略
    • 直接模拟,注意判断闰年,年份、月份、天数的变化处理
    • 基姆拉尔森公式:这个公式可以直接计算出那个日期是星期几,但请注意!这类问题如果假设和真实情况不符的时候要记得换上偏移量,比如问题假设某个日期是星期一,而真实情况这天是星期二,那么我们计算出来的星期几也要-1,但请保证再1~7的环中。

    Code:

    #include <bits/stdc++.h>
    
    using namespace std;
    
    //基姆拉尔森公式
    int calc_week (int y, int m, int d) {
    	if (m == 1 || m == 2) { //month  13,14,3,...12
    		y--;
    		m += 12;
    	}
    	int tag = (d + 2*m + 3*(m+1)/5 + y + y/400 - y/100) % 7;
    	return tag + 1;
    }
    
    int main(int argc, char *argv[]) {
    	int y,m,d;
    	while (cin >> y >> m >> d) {
    		printf("Today : %04d %02d %02d\n", y, m, d);
    		printf("Week : %d\n", calc_week(y, m, d));
    	}
    	return 0;
    }
    
    展开全文
  • 下面就给大家介绍一下电子表格是如何快速测算某一时间是星期几的。 快速测算星期几的方法: 最先开启1个带有时间的表格: 选定B2单元格,点一下界面上的【公式】选择项,在下拉列表中挑选【插进涵数】: 在弹...

    电子表格是Microsoft为使用Windows和AppleMacintosh系统的电脑上编辑的一款表格软件。我们在使用电子表格企业办公的情况下,经常会必须测算某一时间是星期几,那麼如何使用电子表格来实现呢?下面就给大家介绍一下电子表格是如何快速测算某一时间是星期几的。
    快速测算星期几的方法:
    最先开启1个带有时间的表格:


    选定B2单元格,点一下界面上的【公式】选择项,在下拉列表中挑选【插进涵数】:


    在弹出来的插进涵数提示框中,挑选“时间与实践活动”,涵数一栏挑选“WEEKDAY”,点一下明确:


    在弹出来的函数调用提示框中,第一栏输入“A2”,第二栏输入“2”,点一下明确:


    最终咱们完成添充,会看到全部的单元格都出现了星期几:

    推荐阅读

    展开全文
  • 巧算星期几基姆。拉尔森基姆拥有计算机学科的博士学位。他对数据库,算法和数据结构有着浓厚的兴趣。他的联系地址是 (原文为丹麦文--译者注) 31,DK-5270,Odense N,Denmark,或发 E-mail 至 :kslarsen@imada....
     
    

    巧算星期几

    基姆。拉尔森

    基姆拥有计算机学科的博士学位。他对数据库,算法和数据结构有着浓厚的兴趣。他的联系地址是            (原文

    为丹麦文--译者注) 31,DK-5270,Odense N,Denmark,或发 E-mail 至 :kslarsen@imada.ou.dk。

    简介

    布鲁斯 施耐尔

    “四,六,九,十一,三十天就齐……”儿歌是这么唱的;或许你也曾经掰着手指头翻来覆去地数,让赶上单数的指头

    代表只有30天的短月吧?这样的口诀对我们是很管用的(我就是念叨着这首傻乎乎的儿歌长大的),可是电脑就没有这

    份“灵感”了。当然,我们可以用一大堆IF-THEN-ELSES的语句或几个CASE来编写计算程序,让它计算某个指定日期是

    星期几。

    不过我更喜欢基姆拉尔森在本月的“算法小径”中为我们带来的新技巧,因为他的方法另辟蹊径,从一个全新的方向着

    手解决日期计算的问题。其实,并没有什么数学公式能算出某个指定日期是星期几,不过我们可以试着拼凑一个,如果

    我们的尝试成功了,你就能拥有一个易于编程的数学公式,并能用它自动计算哪天是星期几了。

    顺便说一句,如果你已经设计出更巧妙的算法,或是在已有的方法上有了新突破的话,不妨告诉我,我一定洗耳恭听。

    我的联系方法是schneier@chinet.com,或者在DJJ编辑部给我留张便条就行。

    你有没有疑惑过你的电脑怎么就知道今天是星期三呢?就算你的电脑关机了,你重启后设定了新日期,它也能立即知道

    这天是星期几。

    在你还是个孩子的时候,你可能见过一种纪录记录着年,月,日的表格,只要加上几个数字,和它相连的另一张表格就

    会告诉你这个日期是星期几。当然,计算机硬盘的操作系统里也可以加入这样的计算表。不过有一种简单的方法可以轻

    松地算出某天是星期几;而且这个方法只占用很少的内存空间,而那些只能推算几百年的表格可就太占地方了。

    如果目前你的电脑还不具备推算与日期对应的星期数的功能,现在就不妨在自己的程序中试试下面的公式。

    创建公式

    首先,我们要用变量D,M和Y来表示日期。比如,1994年3月1日就用“D=1,M=3,Y=4”记录。我们的目标是让计算结

    果在0到6之间。0代表星期一,1代表星期二,2代表星期三,依此类推。

    1994年3月1日是个星期二,那么“D mod 7(日期变量除以7的余数))))”这个公式对于整个三月份都有效。比如3月18日

    是星期五,18 mod 7=4;而4正代表星期五。别忘了,整数的除法和求模有着密切的关系。比方说,26除以7商3余5,这

    就是说,26除以7商数取整等于3,而26除以7求模(简写为26 mod 7)等于5。以上这些意味着19 mod 7=12 mod 7= 5

    mod 7=5。在运算规则中,负数求模运算法相似,所以依此类推,-2 mod 7=5, -9 mod 7=5。

    在更正式的表达法中,统一用任意整数n和k表达上述关系,那么这个过程可以表达为n=qk+r,这里的q和r的取值范围同

    样是整数和0。表1中列出了所有月份的变换数据(shift information此处试译为“档级数据”,还请进一步校对--译

    者注)。为了尽可能地得出规律,二月被排在最后,同理,一月也是如此。

    例1(a)中的公式是仿照表1中的变换数据栏所描述的模式而创建的。这个公式中的除法一律是商数取整。所以得数是最

    接近真正商数的整数。表2得出了此功能得出的有趣的数值。凭直觉,我们不难发现,当M(代表月份的变量)的值以1为单

    位递增时,2M就成倍增长,而3(M+1)/5就以3/5为增长倍数。

    这正是我们仿制3,2,3,2,3这个重复格式所需要的(表中右边的弯括号表明了这一点)。请注意,我们在以7为除数求模

    ,那么从6到2的求模结果就会逐个增加3(顺序是6,0,1,2)。

    现在,我们发现了适用于逐月向下推算的校正方法,并希望把它加入刚才的尝试中,就是那个mod7公式。还以1994年3月

    1日为例,这个日期的M=3。请注意,在例1(b)中,8 mod 7=1,所以当整个公式合并时,必须减去1。在做以7为除数

    求模的运算时,减1和加6是一样的,因为-1 mod 7=6 mod 7=6。

    这样,例1(c)中的公式就可以计算这一年中剩下的月份了。其实,既然我们把一月和二月排在表1的最后,那么只要我

    们把它们看成是十三月和十四月,就能接着推算1995年的前两个月了。这是因为,虽然它们并不是一个完整的3,2,3,2,3

    结构,但恰好可以是这个结构的开始,为了使这个公式更完善,我们还是最好把一月和二月看成是上一年的十三月和十

    四月。

    加入年份

    顺着年份向下找,我们观察到1995年3月1日是星期三。这说明,每增加一年,我们公式的计算结果就会增加1。这太简单

    了,我们只要简单地把年份加上去就行了。再提醒你一次,我们必须确保出发点是正确的。由于1994 mod 7=6,我们在

    把Y加入已有的公式时就必须减去6。由此改进的例2(a)就更完善了。

    1996年是个闰年,这带来了我们的下一个问题。这一年的3月1日是星期五,而不是刚才的公式推算出的星期四。所以每

    当我们碰上闰年时还得多加上1。判断闰年的规则是,能被4整除,并能被100和400同时整除的年份就是闰年。就这样,

    我们在原有的基础上添加Y/4--Y/100+Y/400。再强调一下,我们必须从一开始就确保正确。既然(1994/4--

    1994/100+1994/400) mod 7=(498--19+4) mod 7=483 mod 7=0,所以就不用再做任何调整了。这样,例2(b)就是我们最终

    的成果了。这个公式能一直工作下去,除非改变现行的日历系统。作为示例,让我们试着推算一下2000年7月4日:

    (4+2*3+(7+1)/5+2000+2000/4--2000/100+2000/400) mod 7= (4+14+2000+500--20+5) mod 7=2507 mod 7=1,所以那一

    天是星期二。

    这个公式还能推算过去的日期;然而计算范围有限,让我们看看1752年9月14号这个星期四吧,我们的公式最远只能推算

    到这里了。不过像“1963年11月22日你在哪里”这样的日常问题中提到的日期还是可以轻松应对的:(22+2*11+3

    (11+1)/5+1963+1963/4--1963/100+1963/400) mod 7=(22+22+7+1963+490--19+4) mod 7=2489 mod 7=4。那天就是星期

    五。

    例3例子3是一个C语言程序,按照把这个公式自动推算给定日期是星期几。

    表1:每月变换数据

    月份         天数         变换

    三月          31            3

    四月          30            2

    五月          31            3

    六月          30            2

    七月          31            3

    八月          31            3

    九月          30            2

    十月          31            3

    十一月        30            2

    十二月        31            3

    一月          31            3

    二月          28            3

    表2:仿制变换数据形式的功能。例1中建立的公式可以适用于1994年。例2把这个公式的功能扩展到可以应用在不同的年

    份进行推算。

    例3:用C语言程序表达上述公式

    01./*一月和二月被当作前一年的*/  
    02.  
    03./*十三月和十四月分别处理*/  
    04.  
    05.  
    06./*计算指定日期是星期几。默认输入的*/  
    07.  
    08./*数字代表正确的日期*/  
    09.  
    10./*推算给定日期是星期几,假定输入是正确的数据 */  
    11.#include    
    12.char *name[] = { "Monday",   
    13.                 "Tuesday",   
    14.                 "Wednesday",   
    15.                 "Thursday",   
    16.                 "Friday",   
    17.                 "Saturday",   
    18.                 "Sunday"  
    19.               };   
    20.void main()   
    21.{   
    22.    int D,M,Y,A;   
    23.    printf("Day: "); fflush(stdout);   
    24.    scanf("%d",&D);   
    25.    printf("Month: "); fflush(stdout);   
    26.    scanf("%d",&M);   
    27.    printf("Year: "); fflush(stdout);   
    28.    scanf("%d",&Y);   
    29.    /* January and February are treated as month 13 and 14*/  
    30.    /* respectively, from the year before.*/  
    31.    if ((M == 1) || (M == 2))   
    32.    {   
    33.        M += 12;   
    34.        Y--;   
    35.    }   
    36.    A = (D + 2*M + 3*(M+1)/5 + Y + Y/4 - Y/100 + Y/400) % 7;   
    37.    printf("It's a %s./n",name[A]);   
    38.}   
    39.  
    40.    
    41.  
    42.    
    43.  
    44./*一月和二月被当作前一年的*/ 


     

    展开全文
  • var arys1 = new Array(); arys1 = "2016-09-25".split('-'); //日期为输入日期,格式为 2013-3-10 var ssdate = new Date(arys1[0], parseInt(arys1[1] - 1), arys1[2]); var week1=String(ssdate.getD...
     var arys1 = new Array();
        arys1 = "2016-09-25".split('-');     //日期为输入日期,格式为 2013-3-10
        var ssdate = new Date(arys1[0], parseInt(arys1[1] - 1), arys1[2]);
        var  week1=String(ssdate.getDay()).replace("0","日").replace("1","一").replace("2","二").replace("3","三").replace("4","四").replace("5","五").replace("6","六")//就是你要的星期几
        var week="星期"+week1; //就是你要的星期几
    

     


                                        

    转载于:https://www.cnblogs.com/webqiand/p/5900237.html

    展开全文
  • 如何快速计算星期几

    千次阅读 2017-03-29 15:57:02
    有的时候需要根据日期快速计算星期几来,我从网上搜索到一个口诀,验证了几个日期,发现还是靠谱的,这个公式的证明目前我还不会,但可以保证2000-2099的星期计算是靠谱的,其他时间我没有验证过。 const u8 ...
  • 求某天是星期几 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; 设置日期语言 ...
  • 有一个公式可以快速地根据日期计算这一天是星期几,这被称为蔡基姆拉尔森计算公式,假设星期为w,年份为y,月份为m,日期为d。  w =(d+2×m+3×(m+1)/5+y+y/4-y/100+y/400)%7  然后把计算出来的w加上1就是真正的...
  • python根据日期返回星期几的方法本文实例讲述了python根据日期返回星期几的方法。分享给大家供大家参考。具体如下:这个函数给定日期,输出星期几,至于0是星期一还是星期天,这和时区有关,反正我这里是0表示星期一...
  • w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六c: 世纪数-1(四位数年份的前两位数)y: 年m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、1.....
  • 计算任何一天是星期几的几种算法

    千次阅读 2017-02-05 16:26:04
    计算任何一天是星期几的几种算法 一:常用公式 W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D Y是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。 二:蔡勒...
  • 巧算星期几 基姆。拉尔森基姆拥有计算机学科的博士学位。他对数据库,算法和数据结构有着浓厚的兴趣。他的联系地址是 (原文为丹麦文--译者注) 31,DK-5270,Odense N,Denmark,或发 E-mail 至 :kslarsen@imada...
  • 快速计算日期公式

    2021-03-05 20:40:08
    记住很久之前的日期,然后一天一天模拟,算出日期星期几。比如宏远1年1日是周一。 蔡基姆拉尔森计算公式 设星期为w, 年份为y,月份为m,日期为d。 w = ( d + 2 * m + 3 * ( m + 1 ) / 5 + y + y / 4 - y / 100 + ...
  • 使用蔡勒公式,只需给出年月日,就可以用该公式来计算任意一个日期星期几。 请参考以下计算星期几的代码例子: /** * 蔡勒公式Java实现例子 * @author Zebe * @version 1.0.0 */ public class ZellerDemo {...
  • 此 GUI 将允许您快速轻松地计算给定(公历)... 两种计算都将显示儒略日和星期几。 屏幕截图显示了在 GPS 出生日期(1980 年 1 月 5 日午夜)计算 GPS 时间的结果 在Windows平台上生成,不确定是否兼容其他操作系统。
  • 60秒轻松计算出任意一年任意一天星期几?一、提出问题 60秒就轻松计算出...有图为证: 如何快速计算出任意一年任意一天,星期几呢?如:2015年元旦,星期几。二、解决之道计算公式是:星期几 = (年份代码 + 月份代
  • 如何10秒钟快速计算出2014年某一天星期几一、提出问题公元2014年即将来到,如何快速计算2014年某一天,星期几呢?如:2014年元旦,星期几。二、解决之道计算公式,或者说算法就是:星期几 = (年份代码 + 月份代码 +...
  • 这篇博客讲述了如何使用蔡勒(Zeller)公式,来快速将任意日期转换为星期数。
  • 废话不多说,还是直接上代码,有需要的童孩可以自行研究:/*** 获取某一时间段特定星期几日期* @author finder.zhou*/public class WeekDayUtil {public static void main(String[] args) {getDates("2013-04-01", ...
  • 法一:根据基姆拉尔森日期公式,已知年月日,可以快速的求出这一天是星期几。 基姆拉尔森日期公式如下所示: 参数说明: y 为我们输入的年; m 为我们输入的月; d 为我们输入的日。 注意:mod为取模符号。在使用时...
  • 如何快速算出一个日期星期几

    万次阅读 2007-11-19 21:16:00
    最常见的公式:(如果你觉得很烦,看公式就可以了) W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D Y是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第天。 最好用的是蔡勒公式: W = ...
  • 转载地址:https://www.cnblogs.com/laneyfu/p/5028916.html // 通过周数和星期计算日期 //2017年1月1日是星期日,算第一周,1月2日周一算是第二周 function dateFromWeek(year, week, day){ //year 年 //...
  • 相差多少天:sysdate-to_date('1991-01-01','YYYY-MM-DD'))<...0相差星期用to_char(sysdate,'ww')获取时间为当年的第多少个星期,同理做减法即可获得差值两个时间之间的月份差select substr(to_char(sysda...
  • 描述 Acmer 小鱼儿 埋头ku算一道题 条件:已知给定 一日期 告诉你这一天是 星期 n,让你计算在未来的m的p次方的天数后是星期几?他很苦恼,聪明的你能帮助他吗? 输入有多组测试数据,每组测试数据以包含三个整数...
  • 第一种方法: from datetime import datetime, timedelta weekdays = ['Monday','Tuesday','Wednesday','Thursday', 'Friday','Saturday','Sunday'] def get_previous_byday(dayname, start_date=None): ...
  • 快速计算给定任意年月日是星期几 */ #include #include #include using namespace std; int ans, ch; inline int in()//快速读入 { ch = getchar(); if (-1 == ch) return -1; while(ch || '9' ) ch = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,611
精华内容 5,844
关键字:

快速计算日期是星期几