Date
日付フィールド、変数、式として認識できる範囲は、100/1/1 から 32,767/12/31 までです。(日本語版の 4D を使用した場合、日付の順序は年/月/日の順になります。)
C_DATE によって宣言された日付は 32767年までの範囲に対応していますが、システムを経由する処理によっては上限にさらなる制限が課せられます。
注: 4D ランゲージリファレンスでは、コマンド説明における日付引数はとくに明記されていない限り、「日付」と表記されています。
日付リテラル
日付リテラル定数は、エクスクラメーションマークで囲んで表します (! ... !)。 日付は ISOフォーマット (!YYYY-MM-DD!) を使って記述します。 下記に、日付定数の例を示します:
!1976-01-01!
!2004-09-29!
!2015-12-31!
空の日付は、 !00-00-00! のように指定します。
Tip: コードエディターでは空の日付を入力するためのショートカットが提供されています。 空の日付を入力するには、エクスクラメーションマーク (!) の入力後に Enterキーを押します。
注:
- 互換性の理由から、4D はシステムフォーマットに準じた二桁の年次の入力を受け付けます (例: !98/04/20!)。 数字が 30以上の場合は 20世紀 (1900年代)、30未満の場合は 21世紀 (2000年代) であると認識します (ただしデフォルト設定が
SET DEFAULT CENTURYコマンドを使用して変更されていない場合に限ります)。 - "地域特有のシステム設定を使う" オプション (メソッドページ 参照) にチェックがされている場合、システムで定義されている日付フォーマットを使用する必要があります。 一般的に、US環境においては、日付は月/日/年の形式で入力され、値はスラッシュ "/" で区切られます。
日付演算子
| 演算 | シンタックス | 戻り値 | 式 | 値 |
|---|---|---|---|---|
| 日付の差 | Date – Date | Number | !2017-01-20! - !2017-01-01! | 19 |
| 日付の加算 | Date + Number | Date | !2017-01-20! + 9 | !2017-01-29! |
| 日付の減算 | Date – Number | Date | !2017-01-20! - 9 | !2017-01-11! |
| 等しい | Date = Date | Boolean | !2017-01-20! = !2017-01-01! | true |
| !2017-01-20! = !2017-01-01! | false | |||
| 異なる | Date # Date | Boolean | !2017-01-20! # !2017-01-01! | true |
| !2017-01-20! # !2017-01-20! | false | |||
| 大きい | Date > Date | Boolean | !2017-01-20! > !2017-01-01! | true |
| !2017-01-20! > !2017-01-20! | false | |||
| 小さい | Date < Date | Boolean | !2017-01-20! < !2017-01-20! | true |
| !2017-01-20! < !2017-01-20! | false | |||
| 以上 | Date >= Date | Boolean | !2017-01-20! >=!2017-01-01! | true |
| !2017-01-01!>=!2017-01-20! | false | |||
| 以下 | Date <= Date | Boolean | !2017-01-20! <= !2017-01-20! | true |
| !2017-01-20! <= !2017-01-01! | false |
JavaScriptからの日付の変換
JavaScript 内での日付はオブジェクトであるため、他のオブジェクト同様、4D に対して日付のJSON 形式を格納したテキストとして送信されます。 この原則は、特にJSON コマンド あるいは Web エリア を使用した場合に実装されます。
JavaScript 日付オブジェクトのJSON 形式は、ISO 8601 標準に準拠しています。例: "2013-08-23T00:00:00Z"。 このテキストを4D 日付に変換するのはデベロッパーの責任です。 これには2つの解決策が利用可能です:
JSON Parse コマンドを使用する:
var $dateIso : Text // ISO フォーマットの日付を受け取る
var $date4D : Date
$date4D:=JSON Parse("\""+$dateIso+"\"";Is date))
Date コマンドを使用する:
var $dateIso : Text // ISO フォーマットの日付を受け取る
var $date4D : Date
$date4D:=Date($dateIso)
これら2つの解決策の違いに注意してください: JSON Parse はSET DATABASE PARAMETER を使用して設定された変換モード に準拠する(あれば)一方で、Date コマンドはこれの影響を受けません。 Date コマンドを使用した変換は常にローカルのタイムゾーンを考慮します。
カレントの日付保存設定がdate type (デフォルト)だった場合、"YYYY-MM-DD" フォーマットのJSON 日付文字列はJSON Parse および Date コマンドの両方において自動的に日付値として管理されます。