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?

$ZTIME

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

Synopsis

$ZTIME(htime,tformat,precision,erropt,localeopt)
$ZT(htime,tformat,precision,erropt,localeopt)

パラメータ

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

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

概要

$ZTIME 関数は、特殊変数 $HOROLOG$ZTIMESTAMP の時刻形式で指定された内部システム時刻 htime を、出力可能形式に変換します。オプション・パラメータを使用しない場合、時刻は “hh:mm:ss” 形式で返されます。“hh” は 24 時間制で表す時刻、“mm” は分、“ss” は秒です。それ以外の場合、時刻は tformatprecision のパラメータ値で指定された形式で返されます。

パラメータ

htime

この値は、その日の午前 0 時 00 分から経過した秒数を表します。$HOROLOG 値の秒の構成要素で、$PIECE($HOROLOG,",",2) を使用して抽出できます。htime は、整数、または precision で指定された精度の小数桁数を持つ小数です。

tformat 値が -1 ~ 4 の場合、htime の有効値は、0 ~ 86399  (-0 は0 として処理される) の範囲の整数部分にする必要があります。この範囲外の値では、<ILLEGAL VALUE> エラーが発生します。tformat 値が 9 および 10 の場合、htime の有効値に負の数字および 86399 より大きい値を含めることもできます。

tformat

サポートされている値は、以下のとおりです。

tformat 説明
-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 時間) で表します。
9 MultiValue のサポートは、以下のとおりです。0 ~ 86399 の範囲の数値に対する tformat 1 (24 時制の "hh:mm:ss") と同じです。負の時刻値および 86399 超の時刻値も受け付けます。
10 MultiValue のサポートは、以下のとおりです。0 ~ 86399 の範囲の数値に対する tformat 2 (24 時制の "hh:mm") と同じです。負の時刻値および 86399 超の時刻値も受け付けます。

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

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

12 時間形式では、午前と午後を時間接尾語で表します。ここでは、AM と PM で表示されています。ユーザのロケールの既定の時間接尾語を決定するには、以下の NLS クラス・メソッドを呼び出します。

  WRITE ##class(%SYS.NLS.Format).GetFormatItem("AM"),!
  WRITE ##class(%SYS.NLS.Format).GetFormatItem("PM"),!

tformat 9 および 10

時刻形式 9 および 10 は、MultiValue のサポート用に提供されています。これらは、ObjectScript の許容範囲 (0 ~ 86399) 内のすべての内部時刻値の tformat 1 および 2 と同じです。他の時刻形式と同様に、-0 は 0 として処理されます。

時刻形式 9 および 10 は、負の数値を受け付けて、対応する負の時刻値を返します。tformat 9 は、"-hh:mm:ss" (24 時制) として負の htime を返します。tformat 10 は、"-hh:mm" (24 時制) として負の htime を返します。時刻形式 10 の場合は、“–59.9” は “–00:00” を返し、“–60” は “–00:01” を返します。

時刻形式 9 および 10 は、86399 より大きな数値を受け入れ、それに対応する時刻を返します。時刻形式 10 の場合、“86400” は “24:00” を返し、“400000” は “111:06” を返します。

時刻形式 9 は、すべての数値に対して、整数秒を返し、オプションで秒の小数部を返します。precision 引数では、秒の小数部の桁数を指定します。

precision

この関数は、precision パラメータで指定された小数点以下の桁数まで、秒の小数部を表示します。例えば precision の値に 3 を入力すると、$ZTIME は秒の小数部を小数点以下 3 桁まで表示します。また、precision が 9 の場合、$ZTIME は秒の小数部を小数点以下 9 桁まで表示します。サポートされている値は、以下のとおりです。

説明
-1 現在のロケールの TimePrecision プロパティから precision 値を取得します。既定は 0 です。precision を指定しない場合は、これが既定の振る舞いになります。
n ゼロ (0) 以上の n の値は、時刻を少数点以下の n 桁まで表すことを示します。
0 0 に設定された場合、または既定値の 0 である場合、秒の小数部は切り捨てられます。

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

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

erropt

このパラメータは、無効な htime 値に対応するエラー・メッセージを抑制します。<ILLEGAL VALUE> エラー・メッセージを生成する代わりに、関数は erropt で示された値を返します。

localeopt

このパラメータは、時刻のオプションのソースとして、ユーザの現在のロケール定義 (0) または ODBC ロケール定義 (1) を選択します。ODBC ロケールは変更できません。これは、異なる各国語サポート (NLS) の選択を行った Caché プロセス間で移植できる、日付文字列および時刻文字列をフォーマットするために使用されます。

ODBC ロケールの時刻定義は、以下のとおりです。

  • 時刻形式の既定は 1 です。時刻区切り文字は ":" です。時刻精度は 0 (小数秒なし) です。

  • 午前と午後の指定子は、"AM" と "PM" です。"Noon" と "Midnight" という単語が使用されます。

特殊変数 $HOROLOG を使用して現在の現地時刻を返すには、$PIECE 関数を使用して、$HOROLOG の秒の部分を指定する必要があります。以下は、24 時間形式 “13:55:11” で時刻を返します。

   WRITE $ZTIME($PIECE($HOROLOG,",",2),1)

次の例では、現在時刻に対して htime$PIECE($HOROLOG,",",2) に設定されています。これらの例は、さまざまな $ZTIME を使用し、異なる時刻形式を返す方法を示しています。

通常、以下の例は、"13:28:55" という形式の時刻を返します。しかし、この形式はロケールに依存します。

   SET htime=$PIECE($HOROLOG,",",2)
   WRITE $ZTIME(htime)

以下の例は、"13:28:55" の形式で時刻を返します。

   SET htime=$PIECE($HOROLOG,",",2)
   WRITE $ZTIME(htime,1)

以下の例は、"13:28:550.999" の形式で時刻を返します。

   SET htime=$PIECE($HOROLOG,",",2)
   WRITE $ZTIME(htime,1,3)

以下の例は、"13:28:55.999999999" の形式で時刻を返します。

   SET htime=$PIECE($HOROLOG,",",2)
   WRITE $ZTIME(htime,1,9)

以下の例は、"13:28" の形式で時刻を返します。

   SET htime=$PIECE($HOROLOG,",",2)
   WRITE $ZTIME(htime,2)

以下の例は、"01:28:24PM" の形式で時刻を返します。

   SET htime=$PIECE($HOROLOG,",",2)
   WRITE $ZTIME(htime,3)

以下の例は、"01:28PM" の形式で時刻を返します。

   SET htime=$PIECE($HOROLOG,",",2)
   WRITE $ZTIME(htime,4)

以下の例は、“13:45:56.021” の形式で時刻を返します。小数点以下有効桁数 3 桁で現在の UTC 時刻を返します。

   SET t=$ZTIME($PIECE($ZTIMESTAMP,",",2),1,3)
   WRITE "Current UTC time is ",t

メモ

無効なパラメータ値

  • 無効な tformat 値を指定すると、<FUNCTION> エラーが返されます。

  • 0 ~ 86399 (以下) の許容範囲に含まれない値を htime に指定し、erropt 値を入力していない場合は、9 および 10 を除くすべての tformat に対して <ILLEGAL VALUE> エラーが返されます。

小数区切り文字

$ZTIME は、整数と小数の区切り文字として、現在のロケールの DecimalSeparator プロパティ値を使用します。DecimalSeparator の既定値は “.” であり、すべてのドキュメントの例でこの区切り文字を使用しています。

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

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

時間区切り文字

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

ユーザのロケールの既定の時刻区切り文字を決定するには、以下の NLS クラス・メソッドを呼び出します。

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

時間接尾語

既定では、Caché は現在のロケールのプロパティを使用して、時間の接尾語名を指定します。$ZTIME で、これらのプロパティ (および、対応する既定値) は以下のとおりです。

  • AM (“AM”)

  • PM (“PM”)

このドキュメントでは、これらのプロパティに常に既定値を使用します。

ユーザのロケールの既定の時間接尾語を決定するには、以下の NLS クラス・メソッドを呼び出します。

  WRITE ##class(%SYS.NLS.Format).GetFormatItem("AM"),!
  WRITE ##class(%SYS.NLS.Format).GetFormatItem("PM")

関連項目

FeedbackOpens in a new tab