リンク
インターシステムズ(日) └日本語ドキュメント インターシステムズ(US) (有)エムブイビイ ダイナシステム(株) Googleグループ(英語) Googleグループ(日本語) George James Software cache'infoアーカイブ 【広告】
|
逆引きCache' Object ScriptCache' Object Script
文字列 数値 ファイル 日時 ユーティリティ 日時はじめに $Horologについて
Cache'は基本的に日時を$Horolog関数(省略形で$H)の戻り値の形式で保持します。 システム日時が2011/03/11 14:46:18だとすると、$Horologは
カンマより前 が日付のシリアル値で、1840/12/31を起点とした日数となります。1840年(天保11年)以前の値を扱う場合は$Horolog形式に変換できないので注意が必要です。上限は9999/12/31なので問題となることはないでしょう。 カンマより後ろ が時刻のシリアル値で、午前0時0分0秒を起点とした秒数となります。 $Hから日付を取得$ZDate関数を使います。第一引数が$Hの値、第二引数が変換形式です。
また、$TR関数を使って以下の様なことも出来ます。 > Write $TR("abcd年ef月gh日","abcdefgh",$ZDate($H,8)) 2014年01月23日 $Hから時刻を取得$ZTime関数を使用します。第一引数が$Hの値のカンマより後ろ、第二引数が変換形式です。 > Write $ZTime(53178)
14:46:18
> Write $ZTime( $P($H,",",2) ) // $Pieceで$Hのカンマより後ろを取得
21:05:18
$Hから日付と時刻をまとめて取得$ZDateTime関数を使います。$ZDate関数と$ZTime関数が合体したものです。
より詳細な時刻を取得$ZTimeStamp関数を使用します。$H形式の後ろに小数点以下3桁がついた形式で応答され、1秒よりも小さい時刻を取得することができます。
別の方法として、$Now関数があります。ver2010ぐらいから使えるようになった関数ですが、 $ZTimeStampよりも小さな位まで取得することができます。 $ZTimeStampとちがってタイムゾーンも反映された時刻が取得されるので、こちらのほうが便利ですね。 > Write $Now() //
()が必要なので注意
62656,34467.678558 タイムゾーンを取得
> Write $system.SYS.TimeZone()
UTC-9時間 = -540分ということですね。
-540 文字列から$H形式の値を取得$ZDateH, $ZTimeH, $ZDateTimeH を使用します。
ある処理に要する時間を計測する$ZHorolog 関数を使うと、小数点以下6桁程度の秒数を取得することができます。
日付の加算・減算
$SYSTEM.SQL.Functions.DATEADDメソッドを使用します。
> Write $SYSTEM.SQL.Functions.DATEADD("day", 7, "2020-01-01") // 2020年01月01日の7日後を取得する 2020-01-08 00:00:00 第二引数には、加算・減産する量を数値で指定します。マイナスの値も設定できます。 第三引数には、基準となる日を文字列または$Horolog形式で指定します。 > Write $SYSTEM.SQL.Functions.DATEADD("minute", -45, "0:15") // 0:15の45分前を取得する 1899-12-31 23:30:00 // 省略時、日付は1900-01-01として動作する 単純に日単位の加算であれば、$H形式に加算するだけでいいですね。 > Write $ZD($H) // 今日 和暦(平成・昭和など)を求める
TBD
|