兩日期間日數

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

程式編寫日期: 2006年5月18日 (修改日期: 2009年3月15日)

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

第一個程式 (83 bytes)

Mem clear: Lbl 0: ?→Y: ?→M: ?→D:

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

365.25Y - . 5: Fix 0: Rnd:

Ans + D + 30.6M: Rnd: Norm 1: Ans→A:

X=0→X => A→B => Goto 0: A - B

 

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

注意: 第二個程式需要在 BASE 模式下執行,因此在輸入程式前請先按 Mode Mode 3 進入BASE模式。

Mem clear: Dec: Lbl 0: ?→Y: ?→M: ?→D:

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 => A→B => Goto 0: 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

 

返回 fx-3650P及SC185程式集

 

 



舊版程式

Mem clear: Lbl 0: ?→Y: ?→M: ?→D:

1M+: 4>M => 12M+ => Y - 1→Y:

365.25Y - . 5: Fix 0: Rnd:

Ans + D + 30.6M - . 5: Rnd: Norm 1: Ans→A:

X=0→X => A→B => Goto 0: A - B

Free Web Hosting