私たちは、Web アプリのタイムゾーン サポートの実装に取り組んできました。
この素晴らしい SO 投稿は、私たちを大いに助けてくれました: 夏時間とタイム ゾーンのベスト プラクティス
MYSQL に OLSON TZ データベースを実装し、それを TZ 変換に使用しています。
スケジュール アプリを構築しているので、次のようにします。
特定の日付の特定の時間に UTC 時間で発生するすべての予約を DateTime フィールドに保存し、 を使用して変換していCONVERT_TZ()
ます。これはうまく機能しています。
よくわからないのは、休暇や休憩などです。
休暇は単なる日付の参照であり、時間部分は含まれません。CONVERT_TZ()
は日付オブジェクトでは機能しないため、ユーザーのタイムゾーンに従って日付値を保存するのが最善であると推測していますか?
id1 id3 startDate endDate
-----------------------------
3 6 2010-12-25 2011-01-03
4 3 2010-09-22 2010-09-26
曜日ごとに保存中に休憩が繰り返されるのと同じことです。現在、休憩は曜日ごとに 0 ~ 6 のインデックスが付けられて保存されています。これらは単なる時間オブジェクトであるため、CONVERT_TZ() を使用することはできず、ユーザーのタイム ゾーンに時間値として格納するだけでよいと思いますか?
bID sID dayID startTime endTime
--------------------------------
1 4 1 12:00:00 14:00:00
2 4 4 13:30:00 13:30:00
この場合、休暇と休憩については、予約時間がユーザーの現地時間に変換された後でのみ、予約時間と比較されます。
これは物事を処理する正しい方法ですか、それとも休暇と休憩の両方を別の方法で保存して、それらを UTC に変換できるようにする必要があります (これが休憩でどのように機能するかはわかりません)。
ご協力ありがとうございます。