1

linq to sql を使用して linq to sql を使用して DB にアクセスする Web サービスに、時刻が 00:00 の JavaScript で日付を渡す場合、一部のクライアント ブラウザーでは、保存後に、db の datetime 列に渡された日付現在、時刻は 00:00 ではなくなりました。場合によっては、真夜中の数時間前であるため、日付が前の日の日付に移動されます。また、数時間前になる場合もあります。

データベースへの時間ではなく、常に日付を保存するにはどうすればよいですか?

これは asp.net webforms と c# および asmx webservices を使用しており、ほとんどのクエリはコンパイルされています。

4

2 に答える 2

0

日付のエンコード方法の詳細によって異なります。ただし、大まかに言えば、次のことを行う必要があります。

  1. クライアントからサーバーに送信されるときにタイムゾーンが消去されないようにしてください。つまり、日付のみの文字列として、またはタイムゾーンを保持した日付として送信します。UTC 日付ではありません。
  2. サーバーでDateTimeKind (UTC またはローカル) および/またはDateTimeOffsetを使用して、クライアント/データベースとの間で送受信するたびに適切に表現されるようにします。

ここも参照してください: Linq to SQL DateTime の値はローカルです (Kind=Unspecified) - UTC にするにはどうすればよいですか?

于 2012-05-05T21:49:51.697 に答える
0

クライアントの日付と時刻が重要だと思います。その場合、日時情報をサーバーに送信する前に iso 形式に変換し、クライアントのタイムゾーン オフセットも送信するのはどうですか。

var d = new Date
d.toISOString() // 2012-05-05T22:14:35.506Z
// or maybe jus
d.getTime() // milliseconds since jan 1st 1970 or thereabouts
d.getTimezoneOffset() // Timezone offset in minutes from UTC

このようにして、UTC の日付と時刻、およびタイムゾーン オフセットも取得します。つまり、UCT 時刻が現地時刻と何分異なるかを示します。たとえば、ノルウェーには負のオフセットがあります (UTC-ノルウェー時間 = 負)。

于 2012-05-05T22:16:59.727 に答える