兩日期間日數

程式計算兩日期間的日數(包括最後一日,但不包括第一日)。 第二個程式較長,但可以輸入任何年份的日期(包括公元前(以負數形式輸入))。

程式編寫日期: 2007年9月8日 (更新日期: 2009年3月15日)

第一個程式是依照網友 SuperMANganese 研究方法將程式簡化。

第一個程式 (81 bytes)

ClrMemory: 1: While Ans: A→B: ?→Y: ?→M: ?→D:

3M-: 0>M => 12M+ => Y - 1→Y: Fix 0:

Rnd( 365.25Y - . 5) + D + Rnd( 30.6M→A:

X=0→X: WhileEnd: Norm 1: A - B

 

第二個程式 (120 bytes,可以輸入任何年份的日期(包括公元前))

注意: 第二個程式需要在 BASE 模式下執行,因此在選擇新程式位置後,按 3 選用BASE模式。

ClrMemory: Dec: 1: While Ans: ?→Y: ?→M:

?→D: A→B: Y + 4800 + (()>Y→Y: 3M-:

0>M => 12M+ => Y - 1→Y:  365Y + D +

(153M + 2) ÷ 5 + Y ÷ 4→A: Ans>2331253 => A + 38

- Y ÷ 100 + Y ÷ 400→A: X=0→X: WhileEnd: A - B

 

例題1: 計算2003年10月15日至2004年4月1日相差的日數。

按 Prog 1 再按 2003 EXE 10 EXE 15 EXE 2004 EXE 4 EXE 1 EXE (顯示相差日數為169)

 

例題2: 計算公元前2003年10月15日至2004年4月1日相差的日數。

注意: 此例題只適用於第二個程式,由於基模式沒有負號,請用減號代替負號輸入負值。

按 Prog 1 再按 - 2003 EXE 10 EXE 15 EXE 2004 EXE 4 EXE 1 EXE (顯示相差日數為1462982)

 

註1: 輸入數值時 Y? 代表年(Year),M? 代表月(Month),D? 代表日(Day)。

註2: 第一個程式輸入的日期範圍為1901-2099年。

註3: 第二個程式可以輸入公元前的日期(以負值代表年份),注意由於公曆的曆法原因,日期在1582年10月5日至1582年10月14日是不存在,所以輸入這個範圍的日期計算將不成立。日期在1582年10月15日或之後,程式自動假定日期是使用格里曆(Gregorian calendar),1582年10月4日或之前,其它則假定是使用儒略曆(Julian Calendar)。

 

參考資料:

Julian day

http://en.wikipedia.org/wiki/Julian_day

 

Julian Day and Civil Date Calculator

http://www.nr.com/julian.html

 

返回 CASIO fx-50FH、fx-3650P II、fx-50FH II及fx-50F PLUS 程式集