ゴーストが前回終了されてから、どれくらいの間隔を置いて起動されたか、前回のネットワーク更新からどれくらい間が空いているか、などを調べたい場合に使う(前回の終了時刻、ネットワーク更新時刻が何らかの方法で保存されている必要がある)。
関数内で使用するTimeZoneDiff変数は、OnNotifyInternationalInfoで通知されるものを設定している。
GETTIME関数については、マニュアル/関数/GETTIME – AYAYA/03を参照。
GetInterval
{ //------------------------------------------------------------------------------
// 現在時刻と、引数で渡された時刻の差を返す。
// 引 数:GETTIME関数で取得される日時の配列
// 戻り値:差分(秒数)、差分(日数)、GETTIME関数で取得される日時の配列
// ※GETTIME関数で取得される日時の配列の番号が2つズレる
//------------------------------------------------------------------------------
_Interval = GETSECCOUNT - GETSECCOUNT(_argv);
if (_Interval < 0) {
//インターバルがマイナスの場合、とりあえず0にする。
_Interval = 0;
}
//時差を補正しつつ差分を取得
_TIME_ARRAY = GETTIME(_Interval + TimeZoneDiff);
//日数を取得。86400=60*60*24(1日の秒数)。
_DateDiff = TOINT(_Interval / 86400);
//戻り値配列を構築
_Value = IARRAY;
_Value ,= _Interval; //[0]
_Value ,= _DateDiff; //[1]
_Value ,= _TIME_ARRAY; //[2]~
_Value;
}
OnNotifyInternationalInfo
{ //------------------------------------------------------------------------------
// 時差情報の取得(SSP限定)
//------------------------------------------------------------------------------
//実際に使用するときに扱いやすいよう、時差を秒数に変換
TimeZoneDiff = reference[0] * 60;
}
使用例
OnBoot
{
StartupTime = GETTIME; //変数、StartupTimeに、ゴーストの起動日時を格納する。秒数ではなく配列の形でなければならないので、GETSECCOUNT関数ではなく、GETTIME関数を使う。
}
OnClose
{
_TIME_ARRAY = GetInterval(StartupTime); //StartupTimeをGetInterval関数に渡して時間差を取得する。
//取得した時間差を使い、ゴーストが起動されていた時間を喋って終了する。
STRFORM("\0\s[5]今回の起動時間は、$4d年$02d月$02d日 $2d時間$2d分$02d秒でした!\_w[2000]\-\e",TIME_ARRAY[2],TIME_ARRAY[3],TIME_ARRAY[4],TIME_ARRAY[6],TIME_ARRAY[7],TIME_ARRAY[8]);
}
コメントを残す