$ZTIMEH (ObjectScript)
構文
$ZTIMEH(time,tformat,erropt,localeopt)
$ZTH(time,tformat,erropt,localeopt)
引数
引数 | 説明 |
---|---|
time | 変換される時刻値 |
tformat | オプション — 変換する時刻形式を指定する数値 |
erropt | オプション — time 引数が無効であると判断された場合に返される式 |
localeopt | オプション — どのロケールを使用するかを指定するブーリアン・フラグ。0 の場合は、現在のロケールが、時刻区切り文字などの文字、文字列、および時刻のフォーマットに使用するオプションを決定します。1 の場合は、ODBC ロケールが、これらの文字、文字列、およびオプションを決定します。ODBC ロケールは変更できません。これは、異なる各国語サポート (NLS) の選択を行った InterSystems IRIS プロセス間で移植できる、日付文字列および時刻文字列をフォーマットするために使用されます。既定値は 0 です。 |
指定の引数値間で省略された引数は、プレースホルダのコンマで示されます。末尾のプレースホルダのコンマは必要ありませんが、あってもかまいません。省略された引数を示すコンマの間に空白があってもかまいません。
概要
$ZTIMEH 関数は、$ZTIME 関数で生成された形式の時刻値を、特殊変数 $HOROLOG と $ZTIMESTAMP の形式に変換します。オプションの引数 tformat が指定されていない場合、入力時刻は “hh:mm:ss.fff...” 形式にする必要があります。これ以外の場合、時刻を正しく変換するには、$ZTIME 関数で出力可能時刻の生成に使用されたものと同じ整数形式コードを使用する必要があります。
小数秒
$ZTIME と異なり、$ZTIMEH は精度を指定することはできません。$ZTIME で返された元の時刻形式の小数秒は、$ZTIMEH が返す値に保持されます。
引数
tformat
サポートされている値は、以下のとおりです。
Code | 概要 |
---|---|
-1 | 現在のロケールの TimeFormat プロパティから、有効な形式値を取得します。既定は 1 です。tformat を指定せず、localeopt が未指定または 0 の場合は、これが既定になります。 |
1 | 時刻を "hh:mm:ss" (24 時間) の形式で入力します。 |
2 | 時刻を “hh:mm” (24 時間) の形式で入力します。 |
3 | 時刻を “hh:mm:ss[AM/PM]” (12 時間) の形式で入力します。 |
4 | 時刻を “hh:mm[AM/PM]” (12 時間) の形式で入力します。 |
ユーザのロケールの既定の時刻形式を決定するには、GetFormatItem()Opens in a new tab NLS クラス・メソッドを呼び出します。
WRITE ##class(%SYS.NLS.Format).GetFormatItem("TimeFormat")
erropt
この引数は、無効な time 値に対応するエラー・メッセージを抑制します。<ILLEGAL VALUE> エラー・メッセージを生成する代わりに、関数は erropt で示された値を返します。
localeopt
この引数は、時刻のオプションのソースとして、ユーザの現在のロケール定義 (0) または ODBC ロケール定義 (1) を選択します。ODBC ロケールは変更できません。これは、異なる各国語サポート (NLS) の選択を行った InterSystems IRIS プロセス間で移植できる、日付文字列および時刻文字列をフォーマットするために使用されます。
ODBC ロケールの時刻定義は、以下のとおりです。
-
時刻形式の既定は 1 です。時刻区切り文字は ":" です。時刻精度は 0 (小数秒なし) です。
-
午前と午後の指定子は、"AM" と "PM" です。"Noon" と "Midnight" という単語が使用されます。
例
入力時刻が “14:43:38” の場合、以下の例は両方とも 53018 を返します。
SET time="14:43:38"
WRITE !,$ZTIMEH(time)
WRITE !,$ZTIMEH(time,1)
入力時刻が “14:43:38.974” の場合、以下の例は 53018.974 を返します。
SET time="14:43:38.974"
WRITE $ZTIMEH(time,1)
無効な引数値
無効な tformat コード (-1 未満または 4 より大きい整数値、0、非整数値) を指定すると、<FUNCTION> エラーが出力されます。
erropt 値を指定しない場合は、以下の条件に該当すると <ILLEGAL VALUE> エラーが出力されます。
-
0 から 23 までの許容範囲外の時刻値で time を指定した場合
-
0 から 59 までの許容範囲外の分値で time を指定した場合
-
0 から 59 までの許容範囲外の秒値で time を指定した場合
-
現在のロケールの TimeSeparator プロパティ値以外の区切り文字を使用する time 値を指定した場合
時刻区切り文字
既定では、InterSystems IRIS は、現在のロケールの TimeSeparator プロパティ値を使用して、時刻文字列の区切り文字を判別します。既定の区切り文字は “:” です。すべてのドキュメントの例でこの区切り文字を使用しています。
ユーザのロケールの既定の時刻区切り文字を決定するには、GetFormatItem()Opens in a new tab NLS クラス・メソッドを呼び出します。
WRITE ##class(%SYS.NLS.Format).GetFormatItem("TimeSeparator")
時間接尾語
既定では、InterSystems IRIS は現在のロケールのプロパティを使用して、時間の接尾語名を判別します。$ZTIMEH で、これらのプロパティ (および、対応する既定値) は以下のとおりです。
-
AM (“AM”)
-
PM (“PM”)
-
Midnight (“MIDNIGHT”)
-
Noon (“NOON”)
このドキュメントでは、これらのプロパティに常に既定値を使用します。
ユーザのロケールの既定の時間接尾語を決定するには、以下のように GetFormatItem()Opens in a new tab NLS クラス・メソッドを呼び出します。
WRITE ##class(%SYS.NLS.Format).GetFormatItem("AM"),!
WRITE ##class(%SYS.NLS.Format).GetFormatItem("PM"),!
WRITE ##class(%SYS.NLS.Format).GetFormatItem("Midnight"),!
WRITE ##class(%SYS.NLS.Format).GetFormatItem("Noon")
関連項目
-
$ZDATETIME 関数
-
$ZDATETIMEH 関数
-
$ZTIME 関数
-
$HOROLOG 特殊変数
-
$ZTIMESTAMP 特殊変数