1

私たちは、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 に変換できるようにする必要があります (これが休憩でどのように機能するかはわかりません)。

ご協力ありがとうございます。

4

2 に答える 2

1

2 つのストレージ形式は適切に見えます。テーブルからそれらを引き出すときに、それらをユーザーの現地時間に変換するだけです。

実際、休憩表については、名目上はすでに現地時間になっていると思います。そのため、予定の現地時間と直接比較するだけです。

于 2010-11-16T14:50:38.770 に答える
0

あなたの質問を十分に理解していないので、私の答えが 100% 正しいと言えません。しかし、あなたがする必要があるのは、DateTimeを「ローカル」時間で保存し、タイムゾーンも保存することだと思います。こうすれば、サマータイムがずれても(実際に起こります)、正確になります。

http://blogs.windwardreports.com/davidt/2009/11/what-every-developer-should-know-about-time.htmlの良い記事(はい、私)。

于 2010-11-16T14:41:09.660 に答える