2012-12-11 1 views
6

私はタイムゾーン対応のアプリケーションを構築しています。テストすべき共通のシナリオは何ですか?タイムゾーン対応アプリケーションを構築する際によくある落とし穴(およびテストするもの)は何ですか?

私が考えることができるコーナーケースはDSTですが、私は束を欠いていると確信しています。私の頭の上オフ

+0

ページングJon Skeet、Jon Skeet .... – ozz

答えて

0

  • タイムゾーンは、時系列のとおりです。これによって私はあなたには、いくつかの瞬間の現地時間がかかるし、どこかに保存した場合、あなたは、今日のタイムゾーン情報を使用している意味します。明日までに、この情報は変更された可能性があり、保存された瞬間は異なって解釈される可能性があります。これを解決するには、タイムゾーン情報をイベントまたはインスタントに格納しておくことを検討してください。

  • 日付と時刻は観測値です。これは、その瞬間のタイムゾーンに関係なく現地時間でインスタントをエンコードすることができ、観測時にコンバージョンを行うことを意味します。 1月1日の午前2時は、今日のある基準点より4日3時間遅れているかもしれません。しかし、1月1日の午前2時には、同じ基準点が4日前と2時間前にしか現れないことがあります。したがって、異なる時点での参照点間の経過時間を変換するときは注意を払わなければなりません。特に、タイマーを設定した場合(N秒)、時々イベントに一致する場合は再計算する必要があります。

  • タイムゾーンは地域によって異なります。これは、同じタイムゾーンオフセットを持つすべての日付時刻を同じに扱うことはできないということです。特に、北半球と南半球のDST観測場所は、年中はしばらくの間一致していますが、残りの部分は完全に同期していません。

  • 現地時間で指定された日付と時刻は存在する必要はなく、複数回存在することもできます。あなたはDSTの例を与えました.DSTスイッチの逆方向の時間は、スイッチの前と後の間に2回、その間に1回です。そのためにフラグが必要な場合があります。同様に、DSTスイッチは前方にスキップします。しかし、唯一の例ではありません。国際日付の近くのいくつかの地域は、それの左または右に決定し、その結果、一日欠けているか、または一日が二度繰り返されています。