HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0321
まぐま1日ごとに加算する2未解決


まぐま

リンク

2015/3/21(Sat) 00:01:48|NO.68001

現在3月20日金曜日
1日後は3月21日土曜日
2日後は3月22日日曜日
3日後は3月23日月曜日



15日後は4月の。。。
と、日にちを取得したいです(閏年の計算も含めて)
サンプル頂けると嬉しいです。
よろしくお願いします。



この記事に返信する


skyblue

リンク

2015/3/21(Sat) 10:11:18|NO.68006

すでに既出ですのでログを検索して下さい。



暇人

リンク

2015/3/26(Thu) 23:32:12|NO.68137

月の日数は決まってるから
現在日時からなら地道に計算すれば出来るけど
おもしろくないので・・・

#module //1年1月1日からグレゴリウス暦で総日数計算。 ///////年月日を経日数に変換 //総日数 = GetDays( y, m, d) // y=年変数(入出) // m=月変数(入出) // d=日変数(入出) //有り得ない日付を指定すると正しい日付に修正される(はず) #defcfunc GetDays var y,var m,var d if m<3 {y-1:m+12}//二月以下の場合12月加算して1年減らす(これは月日から日数を計算する式に必要な処理) _tds=365*(y-1)+((m * 979 - 1033) >> 5)+(y/4)-(y/100)+(y/400)+d GetYMD _tds, y, m, d return _tds ///////総日数を年月日に変換 //GetYMD tds, y, m, d // tds=総日数(入) // y=年変数(出) // m=月変数(出) // d=日変数(出) //statに曜日データとして0〜6が返る(0が日曜日) #deffunc GetYMD double tds,var y,var m,var d y=int(tds/365.2425)+1 //総日数を年平均日数で割って年数を出す y-=((int(tds)-365.2425*(y-1))=0) //総日数が平均日数で割り切れると0日が出来てしまうので1年戻す ly=GetLeapyear(y) //通常は閏年だが100で割り切れて400で割り切れない年は平年とする ds=int(tds)-365.2425*(y-1) //総日数からy-1年分の日数を引いて一年以下の日数を出す if ds<=(59+ly) {//二月以下の月と日付処理 if ds>31 {m=2:d=ds-31}else{m=1:d=ds} }else{ if ly {ds-ly}//閏年だと計算が狂うので一日引いて平年と同じにする m=(ds*32+1033)/979 //3〜12月を算出 d=ds-((m * 979 - 1033) >> 5) //月分の日数を引いて日付を算出 } return int(tds)\7 ///////閏年かを返す //変数 = GetLeapyear( y ) // y=年(入) //0なら平年、1なら閏年 #defcfunc GetLeapyear int y return (((y\4)=0) ^ ((y\100)=0)) | ((y\400)=0) ///////日付と曜日から何週目かを返す //変数 = GetWeeks( d, w ) // d=日付(入) // w=曜日(入) //初週は0になる #defcfunc GetWeeks int d,int w return (((((w+35)-(d-1))\7)+d-1)/7) #global screen 0,900,500 week="日","月","火","水","木","金","土" Year=gettime(0) Month=gettime(1) DayOfWeek=gettime(2) Day=gettime(3) objmode 2 pos 32,5 input Year,40,20 y_id=stat pos 32+48,5 input Month,24,20 m_id=stat pos 32+48+24,5 input Day,24,20 d_id=stat pos 32+48+24+30,5 mes week(DayOfWeek)+"曜日" pos 32,32 add_Day=1 input add_Day,64,20 button "更新",*Update title "現在 "+(Year)+" "+Month+"月 "+Day+"日 "+week(DayOfWeek)+"曜日" *Update gradf 0,0,900,500,0,$ffffff,$ffffff TotalDays=GetDays(Year,Month,Day) DayOfWeek=TotalDays\7 //総日数を7で割った余りが曜日になる(0が日曜日) objprm y_id,Year objprm m_id,Month objprm d_id,Day pos 32+48+24+30,5 mes week(DayOfWeek)+"曜日" //おまけのカレンダー表示 y=Year m=1 d=1 Calendar=GetDays(y,m,d) pos 320,0 color 100,100,255 mes str(y)+"年" repeat GetYMD Calendar,y,m,d w=stat //曜日 if y ! Year {break} if d=1{ pos 320+((m-1)\3)*180,((m-1)/3)*125+20 color 255,0,255 mes str(m)+"月" } pos 350+w*20+((m-1)\3)*180,((m-1)/3)*125+GetWeeks(d,w)*20+20 color 255*(w=0) mes d Calendar++ loop //カレンダーここまで color 255 pos 350+DayOfWeek*20+((Month-1)\3)*180,((Month-1)/3)*125+GetWeeks(Day,DayOfWeek)*20+20 mes "○" //開始日(カレンダーにマーク) pos 32,80 mes "開始日"+(Year)+"年"+Month+"月"+Day+"日 "+week(DayOfWeek)+"曜日" color repeat 20,add_Day tds=TotalDays+cnt GetYMD tds,Year2,Month2,Day2 w=stat mes str(cnt)+"日後は"+(Year2)+"年"+(Month2)+"月"+Day2+"日 "+week(w)+"曜日" //カレンダー側にマーク posx=350+w*20+((Month2-1)\3)*180 posy=((Month2-1)/3)*125+GetWeeks(Day2,w)*20+20 circle posx,posy,posx+18,posy+18,0 loop stop



ONION software Copyright 1997-2021(c) All rights reserved.