最近、時間が記録されたタイムゾーンでの時間の表示をサポートするために、アプリケーションを変更しました。夏時間の変更で正確な時間を取得する際に問題が発生しました。
オフセットを個別に保存することで実装しましたが、各時間の UTC 時間です。次に、時刻を表示するときに、静的オフセットを UTC 時刻に追加して、ユーザーが入力した時刻を表示します。
私たちが直面している問題は、時間変更前に発生した時間を入力することです。入力した時刻を UTC に変換していますが、通常、逆変換は 1 時間ずれています。
明らかに問題は、ユーザーが入力した時間が表す時間のオフセットではなく、「現在の」現地時間のオフセットを保存していることです。しかし、私たちのユーザーのほとんどは、イベントの過程で時間の変更をフォローしていません. したがって、1:55 の時刻を記録していて、10 分後の時刻を記録する必要がある場合は、3:05 ではなく 2:05 と入力します。
これにより、IsDaylightSavingTime を使用したり、「適切な」オフセットを使用して表示時間を変更したりすることができなくなるようです。
そのため、オフセットが「あるべき」にもかかわらず、ユーザーが入力した時間を表示するために何をすべきかについて、私はちょっと固執しています。