0

毎日の営業日データに基づいてレポートを生成するホストされた Web アプリケーションがあります。サーバーがヨーロッパ (UTC 時間を使用するように設定) にあり、私がアジア (UTC+5) にあり、上司と同僚が米国 (UTC-5) にある場合、同じ日付を取得するのに問題があるようです。

たとえば、私の側のレポートでは「2012 年 7 月 23 日」と表示されますが、米国では「2012 年 7 月 22 日」と表示されます。RDP を使用してサーバーを確認したところ、「2012 年 7 月 23 日」も表示されました。

アプリ内にローカライズがありません。リクエストの発信元に基づいて日付を変更しているのが、ASP.NET なのか、クライアント側の JavaScript なのか、MySql なのかわかりません。何か案は?

編集 上司に確認したところ、彼のブラウザ内のソースには「2012-07-23」も表示されています。new Date("2012-07-23")だから私はそれを JavaScriptが呼び出されたときに日付を変更することに絞り込むと思います。

4

2 に答える 2

0

ISO Datetime を使用している場合は、必ず最後にタイムゾーンを指定してください。そうしないと、現地時間としてカウントされます。

データベースと ASP.NET アプリケーションを使用する場合は、可能であればすべてに UTC 時間を使用します。

GETUTCDATE() 

DateTime.UTCNow() 

使用する日付を指定する場合は、可能な限り ISO 日付を使用して、文化的な不変性を減らします。

于 2012-07-23T21:32:22.373 に答える
0

JavaScript コードを責めることができると思います。You ( ) のようなDateコンストラクターnew Date("2012-07-23")を文字列 calls と共に使用Date.parseすると、何も指定されていない場合はローカル タイムゾーンが使用されます。

代わりに、エポックからの ISO タイムスタンプまたはミリ秒を使用します。

もちろん、表示には別の役割があります。ローカルタイムゾーンとして解析された utc 時刻をローカル時刻として出力すると、utc が「正しく」表示されます。utc で解析された utc-string を現地時間として出力すると、現地時間が正しく表示されます。

于 2012-07-23T22:18:28.053 に答える