永发信息网

谁能告诉我在知道年月日的情况下怎么样算出是星期几

答案:3  悬赏:30  手机版
解决时间 2021-01-25 02:56
谁能帮我
最佳答案
在上小学时,有一位同学和我作过这样一个游戏:他让我随便说出当年的某一月某一日,他不用看日历就能很快、准确地说出这天是星期几。

我拿来了一本日历,与他试验了几次。果然他每次都说得很快也很准。我知道他不可能把一年三百六十五天每天星期几都背下来,所以他的本事引起了我很大的兴趣。

后来我知道了他的计算方法:他心里记住了十二个数字,这十二个数字分别对应于当年的十二个月。要计算当年的某月某日是星期几,只要用那日的日数加上那月所对应的数字,然后除以7,余几就是星期几,恰好除尽就是星期日。

我清楚地记得那年的十二个月所对应的数字依次是
1,4,4,0,2,5,0,3,6,1,4,6
1994年是:5 1 1 4 6 2 4 0 3 5 1 3

这一串数字就能很快地心算出1994年任何一天是星期几。这在手头无年历可查的情况下还是有一定用处的。在那一段我们还列出了最近几年每年对应的十二个数字,用这种方法计算最近几年某年某月是星期几也都还方便。

但是要计算自古至今以至遥远未来的公元某年某月某日是星期几,因为手头很难有那一年的年历,那一年相应的十二个数字不易获得,所以那种方法不适用了。

本段要介绍的是计算我们现在使用的历法实行以来或未来公元某年某月某日是星期几的一个方法。

先介绍一个算式:

其中 是公元的年数,C是从这一年的元旦算起到这一天为止(包括这一天是内)的天数。方括号表示其中算式的整数部分,即在计算S的值时,三个方括号中只要算出商数的整数部分,把余数略去不计。

求出S的值之后,除以7,余几就是星期几;除尽了就是星期日。
例如我们计算一下西安事变发生在星期几。
解 西安事变发生在1936年12月12日,所以x=1936 C=347于是可得:

=1935+483-19+4+347=2750
2750÷7=392………6,
所以西安事变发生在星期六。

我们再来计算一下1994年12月25日是星期几;此时x=1994 C=359于是可得 :

=1993+498-19+4+359 =2835
2835÷7=405,无余数,
所以,1994年圣诞节是星期日。

这个计算方法根据的是每四年一闰、百年不闰、四百年再闰的历法,即格里历。格里历是从公元1582年开始实行的,所以,用这个方法可以计算公元1582年以后某年某月某日是星期几。
全部回答
设D = (N, M, d) (年, 月, 日) 把M减去2,如果小于0,就加上12,得到的数记为m 如果M>=3,记n=N 如果M<=2,记n=N-1 用欧几里德除法 得c, y 使: n = 100c + y, (0<=y<100) 则 W = d + [13m/5] + y + [y/4] + [c/4] - 2c (mod 7) 则就是星期 星期天=0 星期一=1 .... 例如: D = (2002, 5, 8) 则m=3 n=8 d=8 c=20 y=2 则W = 8 + [13*3/5] + 2 + [2/4] + [20/4] - 40 (mod 7) = -18 (mod 7) = 3 (mod 7) 是星期三!
没必要那么麻烦,即使不用calendar也可以用date啊,虽然已经不被鼓励使用了 date date = new date() ; date.setyear(n) ; date.setmonth(y+1) ; date.setdate(t) ; system.out.println(date.getday()+1) ; e = date.getday()+1 ; 这样直接就获取是星期几了,e就是星期几 如果你实在是想练习一下switch的话,main函数我改了,以下: public static void main( string[] args ) { int d , n , y , t , x , e , a ; n = integer.parseint(joptionpane.showinputdialog("请输入年号")) ; y = integer.parseint(joptionpane.showinputdialog("请输入月份")) ; t = integer.parseint(joptionpane.showinputdialog("请输入几号")) ; d = n + (n - 1) / 4 - (n - 1) / 100 + (n - 1) / 400 ; if ( n % 4 == 0 ) a = 28 ; else a = 29 ; switch (y) { case 1 : x = t - 1 ; break ; case 2 : x = t + 30 ; break ; case 3 : x = a + t + 30 ; break ; case 4 : x = a + t + 31 + 30 ; break ; case 5 : x = a + t + 31 + 30 + 30 ; break ; case 6 : x = a + t + 31 + 30 + 31 + 30 ; break ; case 7 : x = a + t + 31 + 30 + 31 + 30 + 30 ; break ; case 8 : x = a + t + 31 + 30 + 31 + 30 + 30 + 31 ; break ; case 9 : x = a + t + 31 + 30 + 31 + 30 + 30 + 31 + 31 ; break ; case 10 : x = a + t + 31 + 30 + 31 + 30 + 30 + 31 + 31 + 30 ; break ; case 11 : x = a + t + 31 + 30 + 31 + 30 + 30 + 31 + 31 + 30 + 31 ; break ; case 12 : x = a + t + 31 + 30 + 31 + 30 + 30 + 31 + 31 + 30 + 30 + 31 ; break ; default : x = 0 ; break ; } e = (d + x) % 7 ; if ( e == 0 ) joptionpane.showmessagedialog(null, "这天是星期天") ; if ( !(e == 0) ) joptionpane.showmessagedialog(null, "这天是星期" + e) ; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我们昨天晚上同房,我提前了三小时吃紧急避孕
乌海客来居招待所地址好找么,我有些事要过去
通常情况下,微粒A和B微分子,C和E为阳离子,D为
乌海桃源宾馆地址有知道的么?有点事想过去
请教at45db081的容量问题
有没有游学志陶笛曲《卡农》简谱?顺便告诉我
哪些品牌的实木床口碑比较好?
本人最近购买《星火英语听力直通249分(六级
你若是男的,跟前女友分手后还联系?处有现任
乌海东方红商务酒店地址好找么,我有些事要过
仪表配件厂是做什么的
9的x减1次方等于4的x次方
神犬奇兵里最可爱的狗里谁
苹果7无耳机孔怎么听歌
北屯东方凯瑞商务宾馆地址好找么,我有些事要
推荐资讯
新生活雪非雪化妆品怎么样?
喜乐屋FunHouse地址在哪,我要去那里办事,
There was once a rich and kind store
患者,女,36岁,G3P2。产后阴道脱出物3年且
为青春画上色彩叙事校园
对陆游豪情而奔放的诗
比缘之空更肉的肉番有吗 亲吻妹妹就算了不漏
惠州到郑州火车多长时间
泸西五者温泉一个旧市多少公里
【儿童社保卡怎么办理】...还没有办理社保卡
手机自动下载了滑板流氓兔,怎么永久删除,是什
霍乱弧菌所致的腹泻为A.渗透性腹泻B.吸收不良
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?