日付と時刻を検証し、内部形式に変換します。
Synopsis
$ZDATETIMEH(datetime,dformat,tformat,monthlist,yearopt,startwin,endwin,mindate,maxdate,erropt)
$ZDTH(datetime,dformat,tformat,monthlist,yearopt,startwin,endwin,mindate,maxdate,erropt)
返される値は、使用するパラメータによって異なります。
しかし、5、6、7、8、9 の
dformat を使用するとき、
$ZDATETIMEH は、
dformat コード 1、2、3、5、6、7、8、9 に対応する、外部の日付形式によるあらゆる日付を認識し、変換します。また、T あるいは t で始まる特殊な相対日付形式も同様で、任意にプラス (+) やマイナス (-) を付けたり、現在の日付の前もしくは後の日数を付けます。
$ZDATETIMEH は、関数呼び出しで指定した時刻形式に関係なく、8 つの時刻形式の時刻をすべて認識して変換します。さらに、
$ZDATETIMEH は、接尾語 "AM、PM、NOON、MIDNIGHT" を認識して変換します。これらの接尾語は、大文字、小文字、または両方を混ぜ合わせて表すことができます。これらの接尾語を文字に省略することもできます。
時刻の値を表記する形式を指定する数値です。サポートされている値は、以下のとおりです。
tformat 値が (現地時間を返す) 1 から 4 までの場合、日付と時刻はスペースで区切られます。
tformat 値が (UTC 時間の情報を返す) 5 から 8 までの場合、日付と時刻は文字 "T" で区切られます。
tformat が 7 または 8 に設定される場合、時刻は UTC 時間で返され、返される日付も (必要であれば) UTC 時間値に調整されます。この日付は、現地日付とは異なる場合があります。
-
文字列の最初の文字は、区切り文字 (通常はスペース) です。
monthlist 内の各月名の間に、同じ区切り文字を置く必要があります。この区切り文字は、返される日付の月、日、年の間に表示されます。このため、スペースが通常望ましい区切り文字となります。
-
月名のリストは、1 月 から 12 月に対応する 12 のエントリを含む必要があります。12 より多い、または 12 より少ない月名を指定することは可能ですが、
hdatetime にある月に対応する月名がない場合、<ILLEGAL VALUE> エラーが返されます。
dformat 値に 0、1、2、4、7 を使用して、年を 2 桁で表示する時間ウィンドウを指定する数値コードです。
yearopt の値は以下のとおりです。
yearopt=5 のとき、
startwin は、現在の年より前の年数で表される、スライディング・ウィンドウの最初の年を示す数値です。スライディング・ウィンドウは常に、
startwin で指定した年の初日 (1 月 1 日) から開始します。
endwin を省略、あるいは -1 を指定した場合、スライディング・ウィンドウの有効期限は 100 年間です。
startwin と
endwin の両方を指定する場合、指定するスライディング・ウィンドウの年数は 100 年以内に収める必要があります。
有効な日付の下限を指定する数値です。mindate を省略、あるいは -1 を指定すると、現在のロケールの DateMinimum プロパティから下限を取得します。既定は 0 (1840 年 12 月 31 日) です。
有効な日付の上限を指定する数値です。maxdateを省略、あるいは -1 を指定すると、現在のロケールの DateMaximum プロパティから上限を取得します。既定は、
$HOROLOG の日付部分で許容される最大値である、2980013 (9999 年 12 月 31 日) です。
maxdate を超える値を指定しようとすると、<VALUE OUT OF RANGE> エラー・メッセージが発生します。
このパラメータは、
datetime 値が無効あるいは範囲外の場合に生じるエラー・メッセージを制御します。<ILLEGAL VALUE> あるいは <VALUE OUT OF RANGE> エラー・メッセージを生成する代わりに、関数は
erropt を返します。
以下の状況では、<FUNCTION> エラーが発生します。
-
無効な
dformat コード (-1 未満もしくは 9 より大きい整数値、0、整数以外の値) を指定したとき
-
tformat に無効な値 (-1 未満または 8 より大きい整数値、0、整数以外の値) を指定したとき
-
以下の状況では、<ILLEGAL VALUE> エラーが発生します。
以下の状況では、<VALUE OUT OF RANGE> エラーが発生します。
-
1840 年 12 月 31 日より前、あるいは 9999 年 12 月 31 日より後の日付 (あるいは "T" のオフセット) を指定して、
erropt 値を指定しないとき
-
erropt パラメータが指定されている場合、このパラメータは、
datetime の無効な値、あるいは範囲外の値が原因で生成されるエラー・メッセージを制御します。他のパラメータの無効な値、あるいは範囲外の値が原因で発生したエラーについては、
erropt が指定されているかどうかに関係なく、常にエラー・メッセージが生成されます。
$ZDATETIMEH は、
dformat が 1 または 4 のとき、年月日の区切り文字として現在のロケールの DateSeparator プロパティの値を使用します。ODBC 日付形式 (
dformat=3) の区切り文字は常に、ODBC 基準で要求されている "-" になります。DateSeparator の既定値は "/" であり、この区切り文字は Caché のすべてのドキュメントで使用されています。
既定では、Caché は、現在のロケールの TimeSeparator プロパティ値を使用して、時間の区切り文字を指定します。既定では、区切り文字は ":" で、すべての例でこの区切り文字を使用しています。ODBC 日付形式 (
dformat=3) の区切り文字は常に、ODBC 基準で要求されている ":" になります。
既定では、Caché は現在のロケールのプロパティを使用して、時間の接尾語名を指定します。
$ZDATETIMEH で、これらのプロパティ (および、対応する既定値) は以下のとおりです。
このドキュメントでは、これらのプロパティに常に既定値を使用します。
WRITE $ZDATEH("Nov 25, 2002",5)
WRITE $ZDATETIMEH("Nov 25, 2002 10:08:09.539",5)
これは、59133,36489.539 を返します。
WRITE $ZDATETIMEH("Nov 25, 2002",5)