#伺か YAYAでのゴースト開発メモ:時間差を取得する

ゴーストが前回終了されてから、どれくらいの間隔を置いて起動されたか、前回のネットワーク更新からどれくらい間が空いているか、などを調べたい場合に使う(前回の終了時刻、ネットワーク更新時刻が何らかの方法で保存されている必要がある)。
関数内で使用する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]);
}

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です