前回に引き続き、JSONとバーチャルリストのパート2として日付処理のアイデアを紹介します。
JSON + Virtual List, part 2
(元記事はこちら)
Kevin Frank
2017/7/29
2017/7/31追記 : コメント欄でのBeverly Vothとのやりとりの結果を受けて、ここで使われている日付のエンコードのテクニックは、FileMaker内でJSONの生成と消費が完結する場合のみに有効であることを明記しておきます。
デモファイル: json-plus-virtual-list-part-2.zip
今回の記事は、前回のパート1の短いフォローアップで、JSONの日付のエンコードについての代替案を示します。思い出していただきたいのですが、JSONには日付タイプがなく、ここでの目的の1つは、JSONの日付を地域設定に依存しない方法でエンコードおよびデコードすることです(たとえば、MM/DD /YYYYがデフォルトの地域でエンコードし、DD/MM/YYYYがデフォルトの地域でデコードする場合)。
この目的を達成するために、パート1ではFileMakerの日付をJSONにプッシュするときにGetAsNumber関数でラップしたので、次のようになりました。
このアプローチの利点は、地域による日付表記に依存しないという要求を満たすことです。FileMakerの日付フィールドは、システムの地域/日付設定に関係なく、 上の強調表示されている数値を正しく解釈します。
一方欠点は、読みやすさに関して言えば、人に優しくないというところです。考えられる回避策の1つは、Jeremy Banteによるカスタム関数などで日付をISO 8601形式 (YYYY-MM-DD)でエンコードする方法ですが、このためにはデコードのための手順も追加する必要があります。 FileMakerの日付フィールドはYYYY-MM-DDを自動的には解釈しません。
では、地域設定に依存せず人間が読める形式で日付をエンコードし、かつデコードが簡単にできる方法はあるのでしょうか? 一つの可能性として以下があります。
- ISO 8601フォーマット(YYYY-MM-DD)にエンコードする
- “-“の代わりに“+”を使用し、YYYY+MM+DDとする
これは、いわゆる「日本語」の日付フォーマットでのエンコードになります。
FileMakerの日付フィールドはこれをネイティブで解釈できます。バーチャルリストテーブルの内容を変更する必要はありません。
日本語の日付表記についての詳細は、Birthday Challenges part 1とpart 2 (どちらもコメント欄に活発なやりとりがあります)を参照するか、 Tips ‘n’ Tricks (パート1)のTip #7を参照してください。
ことわざにあるように: この記事は検討のためのアイデア提起であり、YMMV (your mileage may vary. 目的地までの道はいくつもある)。