1

Silverlight を使用していますが、問題が発生しています。私のデータベースでは、yyyy/mm/dd 00:00:00 のような形式でいくつかの日付を保存しました。つまり、年、月、日のみを保存し、時刻を 00:00:00 に取得します。

クライアントがアクションを実行してサーバーに送信すると、データベースの日付の形式を保持する DateTime.Today が取得されますが、送信時に yyyy/mm/dd 22:00:00 が取得されるため、サーバー側で関数は日付を取得しますが、データベースから値を返しません。

これを修正して正しい日時を取得するにはどうすればよいですか?

ありがとうございました

4

3 に答える 3

1

タイムゾーンの問題が発生しないように、UTC 時間を使用してください。

Kind プロパティをチェックすることで、DateTime が UTC であるかローカル ベースであるかを確認できます。また、DateTime.UtcNow で現在の UTC 時刻を取得できます。

于 2012-07-06T11:23:02.513 に答える
0

DateTime 構造は、シリアル化するときに DST、タイムゾーン、カルチャの影響を非常に受けやすくなります。

プッシュする前にクライアント側でシリアル化していますか? クライアントとサーバーのタイムゾーンの違いは何ですか?

DateTime.UtcNow を試してから、データをシリアル化することをお勧めします。インバリアント カルチャを使用してシリアル化することを好みます

HTH

于 2012-07-06T11:20:35.427 に答える
0

UTC 時刻をデータベースに格納するだけでなく、DateTime クラスの Date プロパティを使用して、すべての日付値の時刻を 12:00:00 に固定設定することもできます。

DateTime.UtcNow.Date

ToLocalTime メソッドを使用して、ユーザーのローカル タイムゾーンで日付を表示できます。

DateTime.ToLocalTime().Date

すべてのデータベース エンジンに同様の関数があると確信していますが、UTC 日付を取得するための SQL Server 関数は (驚くべきことに十分です):

GETUTCDATE()

これが役立つことを願っています。

于 2012-07-06T11:35:16.453 に答える