Kanade Labo

かなで研究所

HSPモジュール:日時計算したい

こんにちは。かなで です。

今回はHSP(ホットスーププロセッサ)のモジュールを一つ公開したいと思います。

もともと、仕事でちょっとしたことをするときにHSPを使っているのですが、

「昨日の日付から明日の日付」とか「9時間前から今まで」という日時指定をしたいことが稀によくあります。

それを楽に出来る「まともな」モジュールがなかったので、「適当な」モジュールを作ってみました。

timecalc.zip

上記をダウンロード、解凍して、includeして使ってください。(ファイルをアップロードする際、ファイル名にハッシュ値を使うようにしちゃったので、ファイル名が「f234ed7ea6661d4c15db8f1b0ca90a5f.zip」となってます。すいません)

記入コマンド

timecalc outtime,"-00/03","now"   ;今から3日前の日付をouttimeに格納
timecalc outtime,"13:00","now"    ;今から13時間後の日付をouttimeに格納
timecalc outtime,"-09:00","15:00"  ;15時の9時間前の時間をouttimeに格納

記入例

#include "timecalc.hsp"
timecalc outtime,"-00/03","2001/04/05 06:07:08"
mes outtime ; "2001/04/02 06:07:08と表示されればOK
timecalc outtime,"03:00","2001/04/05 06:07:08"
mes outtime ; "2001/04/05 09:07:08と表示されればOK
stop

入力形式

;prm1 結果を代入する変数
;     prm3で指定したフォーマットになる。
;prm2 変動させたい日時(過去なら頭にマイナス)
;     フォーマットは以下から選択。
;       "mm/dd hh:mm:ss"
;       "mm/dd hh:mm"
;       "mm/dd"
;       "hh:mm:ss"
;       "hh:mm"
;prm3 基準日時
;     NOW/Now/nowを指定時は現在日時になる。
;     フォーマットは以下から選択。
;         "yyyy/mm/dd hh:mm:ss"
;         "yyyy/mm/dd hh:mm"
;         "yyyy/mm/dd"
;         "hh:mm:ss"
;         "hh:mm"
;         "now"

注意点

①ちょっとでもおかしな値を入れるとstat=1でエラーとなります。

②1日後 は出来るけど 24時間後 は出来ない

同様に、1分40秒後 は出来るけど 100秒後 は出来ない

③モジュール内を見ればわかりますが、特殊な事をしてるわけじゃなくて、力技で計算しているだけです。

また、例外処理はほとんど入れてないので、変な挙動をすることがあります。

あまり痛めつけずに、ちょっとした用途で使っていただけると幸いです。

うまく動くと思われる→昨日の日付を知りたい。今から9時間後を知りたい。

うまく動かない→100日前は?10000時間後は?みたいな。

④仕事用に作ったものですので、仕事で困らない限り、恐らく機能拡張(まともなモジュールに)はしないと思います。

予めご了承ください。timecalc.zip

-HSP