0

これは質問というよりも KB です。最近、興味深い問題に直面し、回避策を提供しました。共有する考え。

環境: .NET 3.5、ASP.NET Web フォーム javascript を使用したアプリケーション、RadControls

問題: RadDatePicker を使用して日付を保存するとき、NZ のクライアントは、保存中に日付を 1 減らしていました。

調査:これは、クライアント マシン (ブラウザ マシン) で夏時間が設定された NZ に設定されたタイムゾーンでのみ発生することがわかりました。これは、いくつかの巧妙なコードが原因であり、それ以外の場合はすべての + タイム ゾーンで発生します。

原因: RadControl GetDate() メソッドが、時間オフセットのある日時を返していました。2013/10/15 00:00:00 UTC +13。そのため、JavaScript が AJAX 経由で日時をハンドラー メソッドに渡していたとき、.NET メソッドは UTC オフセット (この場合は +13) を減算していました。したがって、日付は 1 減っていました。巧妙なコードが時刻に 12 時間を追加していたため、これまでは隠されていました。そのため、サーバーが UTC から最大 12 時間を加算または減算しても、日付は同じままでした。しかし今、サマータイムのあるニュージーランドでは、+13 時間でした。

回避策:当分の間、12 時間から 13 時間に延長しました (あまり賢明ではありません)。サーバー時間を提供するため、.NET の ToLocalTime() メソッドは使用できません。他の可能な解決策は、javascript から .NET メソッドに日付のみを送信することです。.NET の DateTime クラスの代わりに DateTimeOffset クラスを使用することも検討しています。

4

0 に答える 0