兩日期間日數
程式計算兩日期間的日數(包括最後一日,但不包括第一日)。 第二個程式較長,但可以輸入任何年份的日期(包括公元前(以負數形式輸入))。
程式編寫日期: 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)。
參考資料:
http://en.wikipedia.org/wiki/Julian_day
Julian Day and Civil Date Calculator
舊版程式
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