私が取り組んでいるeコマースの「新規バウチャー」ダイアログでのバウチャー開始/終了日の実装から、いくつかアイデアを拝借できるかもしれません。
UIで日付範囲の曖昧さを回避し、その柔軟性を示す別の例です。
技術的な詳細: 私たちのアプリケーションでは、日付は常に「タイムスタンプ(タイムゾーン付き)」(postgres)として保存されるため、データベースの設定や接続設定が実際に保存されるタイムスタンプに影響を与えることはありません。Postgresは推奨していませんが、これにより、どのような状況やSQLクエリでも日付の正確性が100%保証されるため、私たちはこの方法を採用しています。Postgresのdate/time/timezone関数を使用して、日付のタイムゾーンを直接操作でき、常に100%正確に機能することを確信できます。私たちはそれに依存しています。
そして、タイムゾーンが必要なすべてのエンティティ(ユーザープロファイル、マーケット、バウチャー、会計士向けのレポートなど)に対してタイムゾーン設定を用意しています。これにより、あらゆる日付をあらゆるタイムゾーンに、躊躇なくオンザフライで変換できます。
ここでの主なポイントは次のとおりです。
- 日付と時刻は常にタイムゾーンとともに保存する。
- タイムゾーンの選択は常に保存する。
- UIでは日付を非常に明確にし、魔法のような処理はしない。
- ユーザーが「保存」をクリックする前に、選択したタイムゾーンでの実際の日付を確認できるようにする。

