可以用日子來推算出星期幾嗎?

2007-03-14 11:22 pm
請問有何方法只需知道某月某日,就可知道這日是星期幾呢?

回答 (3)

2007-03-14 11:42 pm
✔ 最佳答案
First, you need to use these two tables:

Table 1.
Jan = 0 (6 if leap year)
Feb = 3 (2 if leap year)
Mar = 3
Apr = 6
May = 1
Jun = 4
Jul = 6
Aug = 2
Sep = 5
Oct = 0
Nov = 3
Dec = 6

Table 2.
Mon = 1
Tue = 2
Wed = 3
Thurs = 4
Fri = 5
Sat = 6
Sun = 0

For any date in AD (AD only, this method cannot use on BC)

- Take any year (including the century, eg. 1998 not 98)
- Divide the year by 4 and ignore any remainder. Add this result onto the year
- Divide the year by 100, ignore any remainder and subtract this from the total
- Divide the year by 400, ignore any remainder and add this to the total
- Add the date (day of the month)
- Add the month number from the table as before
- Subtract 1 from the total
- This gives you the day of the week

Example
On which day of the week was the 9th of March 1879?
1879 / 4 = 469, 1879 + 469 = 2348
1879 / 100 = 18, 2348 - 18 = 2330
1879 / 400 = 4, 2330 + 4 = 2334
2334 + 9 = 2343
Using the month number from Table 1, 2343 + 3 = 2346
2346 - 1 = 2345
2345 / 7 = 335 remainder 0
From Table 2, 09/03/1879 was a Sunday

source from...http://jonathan.rawle.org/hyperpedia/day_calculation.php
2007-03-23 2:59 am
可以set計數機程式...
由日期計算星期天 ( Finding Day of Week from Date )

( 程式版本:1.2,最後更新日期 4 NOV 2006。)

注意:此程式可在 Casio FX-3650P / 3950P、Truly SC-185 及 Casio FX-50F Plus 上使用。

這個程式會由給出的日期計算它屬於一星期的那一天。計算結果 1 至 6 分別表示是星期一至星期六,0 表示是星期日。程式需要在 BASE 基數模式下執行,所以

(1) 在 FX-3650P / 3950P / Truly SC-185 上,在選擇程式位置前請先按 MODE MODE 3 將計算機轉入 BASE 基數模式 ( BASE )。

(2) 在 FX-50F Plus 上,在選擇程式位置後,請按 3 將計算機轉入 BASE 基數模式 ( BASE )。

程式一

程式組 75 bytes
1 Dec : ? → Y : ? → M : ? → D :
2 M > 2 => Goto 1 : Y – 1 → Y : 12 M+ :
3 Lbl 1 : D + 2M + Y + 1 + Y ÷ 4 – Y ÷ 100
4 + Y ÷ 400 + ( 3 + 3M ) ÷ 5 :
5 Ans – 7 ( Ans ÷ 7
MODE MODE MODE 2 MODE 1
( FX-3650P / 3950P / Truly SC-185 )
MODE 1 ( FX-50F Plus )

程式二

程式組 71 bytes
1 Dec : ? → Y : ? → M : ? → D : 2 M– :
2 M > 0 => Goto 1 : Y – 1 → Y : 12 M+ :
3 Lbl 1 : D + Y + Y ÷ 4 – Y ÷ 100 + Y ÷ 400
4 + 31M ÷ 12 : Ans – 7 ( Ans ÷ 7
MODE MODE MODE 2 MODE 1
( FX-3650P / 3950P / Truly SC-185 )
MODE 1 ( FX-50F Plus )

( 上面的 => 是一個特別命令,在 P-CMD 程式命令選單可找到。)

執行程式後計算機會自動轉入 BASE 基數模式。( 計算機會顯示 d。)

例一:求 2000 年元旦是星期幾。

按 Prog,再按 1 至 4 選擇輸入程式位置 ( 必須和輸入程式時選擇的位置相同,此時計算機出現 Y? ),再按

2000 EXE 1 EXE 1 EXE 顯示 6 ( 星期六 )

亦即是說 2000 年元旦是星期六。

例二:求 2004 年 4 月 11 日是星期幾。

按 Prog,再按 1 至 4 選擇輸入程式位置 ( 必須和輸入程式時選擇的位置相同,此時計算機出現 Y? ),再按

2004 EXE 4 EXE 11 EXE 顯示 0 ( 星期日 )

亦即是說 2004 年 4 月 11 日是星期日。

程式執行完成後,請按 MODE 1 將計算機轉回 COMP 模式。

註:程式一使用以下公式計算:

N = d + 2m + [3(m+1)/5] + y + [y/4] – [y/100] + [y/400] + 1

其中 d 是日期中的日子,m 是月份,y 是年份。不過,如果日期屬於一月或二月,則 m 要加 12,而 y 要減 1。[ ] 表示只要除數的商的整數部份。最後將 N 除 7 得出的餘數就表示是那一天 ( 0 表示是星期日 )。

程式二使用以下公式計算:

N = d + [31m/12] + y + [y/4] – [y/100] + [y/400]

其中 d 是日期中的日子,m 是月份,y 是年份。不過,如果日期屬於一月或二月,則 m 要加 10,而 y 要減 1,否則 m 要減 2,y 不變 ( 即是說,三月是 1,四月是 2,一直到十二月是 10,一月是 11,二月是 12 )。[ ] 表示只要除數的商的整數部份。最後將 N 除 7 得出的餘數就表示是那一天 ( 0 表示是星期日 )。
2007-03-14 11:59 pm
你記住呢組密碼 : 033 614 625 035
由第一個密碼開始代表果個月份
然後將果個月份既日子加上去,之後再除以7,
淨返落黎既數字就係果日既星期幾喇
例如 : 6月15日 = 4+15=19-14=星期5
5月4日 = 1+4 =星期5
不過只係岩用2007年,如果下一年就要將D密碼全部加1

2007-03-14 17:19:32 補充:
Sorry ,下一年D密碼並非全部加1係1,2月份加1...而3月份開始加2呀...因為明年是潤年呀...


收錄日期: 2021-04-12 20:16:42
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070314000051KK01675

檢視 Wayback Machine 備份