0

私は現在、ユーザー (それぞれのタイムゾーン) が 1 日を通して受け取る特定の通知の「カットオフ」時間を設定する必要があるプロジェクトに取り組んでいます。たとえば、ユーザーは、午前 8 時より前と午後 7 時 30 分までにアラートを受け取りたくないと言うでしょう。このユーザーは CST にあり (各ユーザーのタイム ゾーン情報が保存されます)、「サーバー」は EST にあります。サーバーは、どのユーザーに通知するかなどのすべての論理的な決定が行われる場所です。

比較目的でのみ時間部分を変換するベストプラクティスは何ですか?

私の現在の考えは、ユーザーが設定した時刻、たとえば「午前 7 時」を取り、完全な DateTime オブジェクトを作成し、それを .ToUniversalTime() として保存することです。サーバーでは、DateTime オブジェクトを現地時間に変換し、時間部分のみを比較できます。

「より良い」解決策や、同様の問題に取り組んだ人からのアドバイスはありますか?

ありがとう!

4

1 に答える 1

0

最小時間と最大時間を日付なしで現地時間として保存することをお勧めします。また、CST や CDT ではなく、"Central Time" など、ユーザーの一般的なタイムゾーン情報を保存することもできます。

通知の送信について決定する準備ができたら、現在の UTC 時刻をユーザーのローカル タイムゾーンに変換し、保存されている時間範囲と変換された時刻を比較します。

保存された時間情報から完全なカレンダー日付を作成しようとすると、特定の場合、特に夏時間の変更で問題が発生します。比較のために UTC からユーザーの現地時間に変換することにより、その問題は回避されます。

于 2013-10-14T16:12:42.963 に答える