こういったコードを自力で書いてみることはいい勉強になると思うのですが……。
とりあえず昔書いたコードを晒しておきますね。
(注:画面上−画面下の経過日数を計算するミニツール)
;何年何月何日と何年何月何日との日付の差を計算します。
;尚、グレゴリオ暦を使用しているので、
;グレゴリオ暦制定の1582年以降に有効です。
#packopt name "day_gap"
#module
#defcfunc allday int date1,int date2,int date3
;初期設定
dim yearplus,12,2
yearplus(0,0)=0 :yearplus(0,1)=0
yearplus(1,0)=31 :yearplus(1,1)=31
yearplus(2,0)=59 :yearplus(2,1)=60
yearplus(3,0)=90 :yearplus(3,1)=91
yearplus(4,0)=120 :yearplus(4,1)=121
yearplus(5,0)=151 :yearplus(5,1)=152
yearplus(6,0)=181 :yearplus(6,1)=182
yearplus(7,0)=212 :yearplus(7,1)=213
yearplus(8,0)=243 :yearplus(8,1)=244
yearplus(9,0)=273 :yearplus(9,1)=274
yearplus(10,0)=304 :yearplus(10,1)=305
yearplus(11,0)=334 :yearplus(11,1)=335
;閏年判定
flg=0
if date1\4=0 :flg=1
if date1\100=0 :flg=0
if date1\400=0 :flg=1
;date2月date3日→date_d日
date_d=yearplus(date2-1,flg)+date3
;date1年→date_y日
date1_2=date1-1
uru=date1_2/4-date1_2/100+date1_2/400 ;date1-1年までの閏年の数
date_y=(date1_2-uru)*365+uru*366 ;a-1年までの日数
;date_d日+e日→f日
date4=date_d+date_y
return date4
#global
year_1 =gettime(0)
month_1=gettime(1)
day_1 =gettime(3)
year_2 =1995
month_2=1
day_2 =17
year_3 =0
month_3=0
day_3 =0
screen 0,300,120
title "日付の差 - 未計算"
objsize 40,20
pos 40,10 :input year_1
pos 84,10 :mes "年"
pos 110,10 :input month_1
pos 154,10 :mes "月"
pos 180,10 :input day_1
pos 224,10 :mes "日"
pos 40,40 :input year_2
pos 84,40 :mes "年"
pos 110,40 :input month_2
pos 154,40 :mes "月"
pos 180,40 :input day_2
pos 224,40 :mes "日"
pos 15,40 :mes "−"
pos 250,10 :mes "(後)"
pos 250,40 :mes "(前)"
line 10,70,280,70
pos 40,80 :input year_3
pos 84,80 :mes "年"
pos 110,80 :input month_3
pos 154,80 :mes "月"
pos 180,80 :input day_3
pos 224,80 :mes "日"
pos 250,80 :mes "(差)"
repeat
stick ky
if ky&32 :gosub *calc
if ky&128 :end
await 5
loop
*calc
;何年何月何日と何年何月何日との日付の差を計算
g_day_1=allday(year_1,month_1,day_1)
g_day_2=allday(year_2,month_2,day_2)
g_day_3=g_day_1-g_day_2
if g_day_3<0 :title "日付の差 - ERROR" :return
title "日付の差 - "+g_day_3+"日"
year_3=g_day_3/365 :g_day_3=g_day_3\365
month_3=g_day_3/30 :g_day_3=g_day_3\30
day_3=g_day_3
objprm 6,year_3
objprm 7,month_3
objprm 8,day_3
return
※自力で組んでからデバッグしたい時は、
http://birth.twitter-tools.net/なんかが便利。