Date
Date ( expression ) : Date
引数 | 型 | 説明 | |
---|---|---|---|
expression | Text, Date | → | 日付を表す文字列か、日付型の式 |
戻り値 | Date | ← | 日付 |
説明
Dateコマンドは、expression を解釈し、日付を返します。
expression 引数は、ISO日付フォーマットかシステムレベルで設定される地域設定に従わなければなりません。
ISO日付フォーマット
この文字列は"YYYY-MM-DDTHH:MM:SS"という書式で構成されます。例えば"2013-11-20T10:20:00"と表現され、地域設定と関わり無く、Dateコマンドは引数として渡されたexpression を正しく評価します。ピリオドのあとの小数以下の秒はサポートされています(例:"2013-11-20T10:20:00.9854")
もしexpression のフォーマットが ISO日付フォーマットに適合しない場合は、地域設定で定義された短い形式の日付フォーマットとして評価します。
注 : 4D v14以降、"YYYY-MM-DDTHH:MM:SSZ"の書式を使用することが推奨されます。これはISOスタンダードに準拠し、またタイムゾーンを表す事ができます。
地域設定 expressionがISO日付フォーマットに適合しないとき、オペレーティングシステムの地域設定で定義された短い形式の日付フォーマットを評価のために使います。
日本語環境では、日付は通常YY/MM/DD (年, 月, 日) の順です。月と日は1あるいは2桁の数字です。年は2あるいは4桁の数字です。年が2桁の場合は数値に基づいて、19または20を年の先頭に追加します。その境界値は、デフォルトで30です。
- 30以上の場合、20世紀の日付であると判定して、先頭に19を加えます。
- 30未満の場合、21世紀の日付であると判定して、先頭に20を加えます。
SET DEFAULT CENTURYコマンドで境界値を設定できます。
有効な日付区切り文字は、 スラッシュ (/), スペース, ピリオド (.), コンマ (,) そしてダッシュ(-)です。
- 無効な日付("94/13/35" や "94/aa/12" など)を expression に渡した場合、Date は空の日付を返します(00/00/00)。expression の値が有効であるかを検証するのはデベロッパの責任です。
- expression 引数が未定義へと評価される場合、Date は空の日付(00/00/00)を返します。これは式の結果(例:オブジェクト属性など)が、たとえ未定義であっても日付として返されることを期待したい場合などに有効です。
注: 4D v16 R6以降、日付はオブジェクト属性の中に日付型の値として保存できるようになりました。以前のリリースでは、文字列としての保存はできませんでした(このオプションについての詳細な情報については、互換性ページ の"オブジェクトではISO日付フォーマットの代わりに日付型を使用する"を参照してください)。属性内の日付が文字列として保存されているか日付型として保存されているかを調べるためには、Value type コマンドを使用する必要があります(最後の例題を参照してください)。
日付型の式
expression 引数が日付型である場合、Date は引数として渡された日付を"そのまま"返します。これはポインターやオブジェクトの属性などを使用した汎用的なプログラミングのコンテキストにおいて特に有用です。
例題 1
以下の例題はリクエストダイアログを使用して、ユーザに日付の入力を要求します。ユーザが入力した文字列は日付に変換され、reqDate変数に格納されます:
reqDate:=Date(Request("日付を入力してください:";String(Current date)))
If(OK=1)
// reqDate変数に格納された日付に処理を行う
End if
例題 2
以下の例題では様々な場合の結果を示しています:
vdDate:=Date("12/25/94") //USシステム上では12/25/94 を返す
vdDate2:=Date("40/40/94") //00/00/00
vdDate3:=Date("It was the 6/30, we were in 2016") //06/30/16
var $vobj : Object
$vobj:=New object("expDate";"2020-11-17T00:00:00.0000")
vdDate4:=Date($vobj.expDate) //11/17/20
vdDate5:=Date($vobj.creationDate) //00/00/00
例題 3
以下の例題はISOフォーマットに基づき日付に変換します:
$vtDateISO:="2013-06-05T20:00:00"
$vDate:=Date($vtDateISO)
//$vDate変数は、システムに関係なく2013年6月5日を表します
例題 4
カレントの属性日付保存オプションに関係なく、オブジェクト属性から日付を取り出したい場合を考えます:
If(Value type($myObj.myDate)=Is date) //日付として保存されているので変換の必要なし
$vDate:=$myObj.myDate
Else //文字列として保存されている場合
$vDate:=Date($myObj.myDate)
End if