オブジェクトは 素晴らしいものです。その柔軟性とスピード、そしてエレガントさは、多くの開発者にとっての第一選択肢となっています。オブジェクト内での日付の使用がより簡単に、より直感的になりました。これからは、オブジェクトの中で文字列ではなく、日付を設定することができるようになりました。
どのように機能するのでしょうか?
オブジェクトの中で日付を使うには、データベース設定で、互換性設定「オブジェクトでISO日付フォーマットの代わりに日付型を使用する」をチェックするだけです。
これができたら OB SET と OB Getは、is date定数を必要とせずに動作します。
OB SET ( ; "myDate"; ) := ( ; "myDate")$myObject$date
$dateOB Get$myObject
オブジェクト記法も使えます。見てみてください。
$myObjectmyDate:= := ...$date
$date$myObjectmyDate
文字列化とパース
互換性は維持されています
4D v16 R6以前では、日付の入ったオブジェクトは JSON Stringifyコマンドを呼び出すと、日付を含むオブジェクトは、ISO 8601の正規化に従って、次のフォーマット “YYYY-MM-DDThhmmss.sssZ” で体系的に “文字列化” されました。逆の操作。 JSON Parseは、デフォルトではこの形式を解釈しないため、文字列が生成されます。
新機能
データベース設定の互換性オプションがチェックされている場合、日付は単に「YYYY-MM-DD」 (やはりISO 8601標準に従う)として JSON stringifyコマンドを呼び出す際に、日付は単に「YYYY-MM-DD」(ISO 8601 標準に準拠) としてフォーマットされます。を使用する場合、この文字列は JSON Parseを使用すると、この文字列はオブジェクトの中で日付として(文字列としてではなく) 設定されます!
モードを動的に変更
必要であれば、このデフォルト設定は SET DATABASE PARAMETERコマンドとDates inside object セレクターを使用してプログラミングすることで、このデフォルト設定を変更することができます。
リマインダSET DATABASE PARAMETER(Dates inside object;option) は、現在のプロセスに対してローカルです。
このoption で指定可能な値が 3 つになりました。
- String type without time zone (以前はローカルのタイムゾーンを無視するとして知られていました)
- String type with time zone (以前はタイムゾーンを考慮する)
- Date type (新機能!)
その結果、JSONデータを4Dにインポートする際に、日付のフォーマットを動的に変更することができるようになりました。