Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$ZTIMEH

時刻を検証し、これを表示形式から Caché の内部形式に変換します。

Synopsis

$ZTIMEH(time,tformat,erropt,localeopt)
$ZTH(time,tformat,erropt,localeopt)

パラメータ

time 変換される時刻値
tformat オプション — 変換する時刻形式を指定する数値
erropt オプションtime パラメータが無効であると判断された場合に返される式
localeopt オプション — どのロケールを使用するかを指定するブーリアン・フラグ。0 の場合は、現在のロケールが、時刻区切り文字などの文字、文字列、および時刻のフォーマットに使用するオプションを決定します。1 の場合は、ODBC ロケールが、これらの文字、文字列、およびオプションを決定します。ODBC ロケールは変更できません。これは、異なる各国語サポート (NLS) の選択を行った Caché プロセス間で移植できる、日付文字列および時刻文字列をフォーマットするために使用されます。既定値は 0 です。

指定のパラメータ値間で省略されたパラメータは、プレースホルダのコンマで示されます。末尾のプレースホルダのコンマは必要ありませんが、あってもかまいません。省略されたパラメータを示すコンマの間に空白があってもかまいません。

概要

$ZTIMEH 関数は、$ZTIME 関数で生成された形式の時刻値を、特殊変数 $HOROLOG$ZTIMESTAMP の形式に変換します。オプション・パラメータ tformat が指定されていない場合、入力時刻は “hh:mm:ss.fff...” 形式にする必要があります。これ以外の場合、時刻を正しく変換するには、$ZTIME 関数で出力可能時刻の生成に使用されたものと同じ整数形式コードを使用する必要があります。

パラメータ

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) の選択を行った Caché プロセス間で移植できる、日付文字列および時刻文字列をフォーマットするために使用されます。

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)

メモ

小数秒

$ZTIME と異なり、$ZTIMEH は精度を指定することはできません。$ZTIME で返された元の時刻形式の小数秒は、$ZTIMEH が返す値に保持されます。

無効なパラメータ値

無効な tformat コード (-1 未満または 4 より大きい整数値、0、非整数値) を指定すると、<FUNCTION> エラーが出力されます。

erropt 値を指定しない場合は、以下の条件に該当すると <ILLEGAL VALUE> エラーが出力されます。

  • 0 から 23 までの許容範囲外の時刻値で time を指定した場合

  • 0 から 59 までの許容範囲外の分値で time を指定した場合

  • 0 から 59 までの許容範囲外の秒値で time を指定した場合

  • 現在のロケールの TimeSeparator プロパティ値以外の区切り文字を使用する time 値を指定した場合

時間区切り文字

既定では、Caché は、現在のロケールの TimeSeparator プロパティ値を使用して、時間の区切り文字を指定します。既定の区切り文字は “:” です。すべてのドキュメントの例でこの区切り文字を使用しています。

ユーザのロケールの既定の時刻区切り文字を決定するには、GetFormatItem()Opens in a new tab NLS クラス・メソッドを呼び出します。

  WRITE ##class(%SYS.NLS.Format).GetFormatItem("TimeSeparator")

時間接尾語

既定では、Caché は現在のロケールのプロパティを使用して、時間の接尾語名を指定します。$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")

関連項目

FeedbackOpens in a new tab