MOD ざざん

HSP_2014_time_management.hsp

時間を計測します。PLAY時間管理とかにどうぞ
//      配布サイト blueleaf様 http://hp.vector.co.jp/authors/VA034288/
#include "longint.hsp"          
        time_init
    button "test",*do_time
    stop
*do_time
        title get_strd_time()
        stop
        
#deffunc time_init
        julius hoge_day
        pass_from_2000=hoge_day
        mes ""+pass_from_2000
        keika_time=Longint(0)
        
        dim gtime, 4, 3
        gtime(0,0) = gettime(4)
        gtime(1,0) = gettime(5)
        gtime(2,0) = gettime(6)
        gtime(3,0) = gettime(7)
        return
#deffunc set_keika_time var p_time
        keika_time=Longint(p_time)
        return
#defcfunc get_strd_time
        gtime(0,1)=gettime(4)-gtime(0,0)
        gtime(1,1)=gettime(5)-gtime(1,0)
        gtime(2,1)=gettime(6)-gtime(2,0)
        gtime(3,1)=gettime(7)-gtime(3,0)
    
        julius piyo_day
        this_from_2000=piyo_day-pass_from_2000
        day_hour=LongInt(this_from_2000)
        day_hour*=(24*3600)
        
    passed=LongInt(0)
    passed =keika_time+day_hour+ LongInt((gtime(0, 1) * 3600)) + LongInt((gtime(1, 1) * 60)) + LongInt((gtime(2, 1)))
    if passed < 0 : passed += 24 * 60 * 60 
    
    ps_h=0:ps_m=0:ps_s=0:ps_tmp=0
    m_break passed, ps_h,ps_m,ps_s,ps_tmp
    return ""+ps_h+":"+ps_m+":"+ps_s


#defcfunc get_sum_day int p_year
        y=p_year-2000
        day_sum=0
        if y<0: return -1
        repeat y
                d=2000+cnt
                if Isleapyear(d){
                        day_sum+=366
                }else{
                        day_sum+=365
                }
        loop
        return day_sum
;1年365日 閏年366日

//      配布サイト さくら様 http://hspnext.com/module/library.htm
#deffunc julius var prm1,int prm2,int prm3,int prm4
#define global ctype round(%1) double(strf("%%0.0f", %1))
;*******************************************************************************
;   ユリウス日を取得 (julius)
;
;   戻り値 : statは常に0, Value=ユリウス日
;
;   ・書式     julius Value,nYear,nMonth,nDay
;   ・引数     Value  (var) : 数値型変数
;              nYear  (int) : 1994〜2020 gettime(0)
;              nMonth (int) : 1〜12      gettime(1)
;              nDay   (int) : 1〜31      gettime(3)
;   ・タイプ   モジュール命令
;
;-- (NOTE) ---------------------------------------------------------------------
;
;   (使用例)
;   julius n,2005,3,20 : mes n
;*******************************************************************************
        y = prm2 : if (y<=0)|(y>3000) : y =gettime(0)
        m = prm3 : if (m<=0)|(m>12)   : m =gettime(1)
        d = prm4 : if (d<=0)|(d>31)   : d =gettime(3)

        ;準ユリウス日を計算
        MJD = (365.25*y)+(y/400)-(y/100)+(30.59*(m-2))+d-678912
        ;ユリウス日を計算
        JD=round(MJD+2400002.5) : prm1=int(JD)
return 0

//      配布サイト HSP開発wiki http://hspwiki.hinekure.net/小ワザ/ストップウォッチ.html
#deffunc m_break var param, var hour, var min, var sec, var milliSec  //  ミリ秒を時・分・秒・ミリ秒に分解する内部関数
 
    hour     =  param / 3600
    min      = (param - hour * 3600) / 60
    sec      = (param - hour * 3600 - min * 60) 
;    milliSec =  param - hour * 3600000 - min * 60000 - sec * 1000
    return

README