7

次のコードを使用して、サーバー側のC#から日付を取得しています。

DateTime d1 = new DateTime(1970, 1, 1);
DateTime d2 = (DateTime)c.ccdTimestamp2;
long x = new TimeSpan(d2.Ticks - d1.Ticks).TotalMilliseconds;

javascript側でコードを取得すると:

function (timestamp) {
    alert("testing :" + new Date(timestamp))
}

これにより、完全にフォーマットされた日付が得られますが、ここで17.15の場合、19.15 GMT +2が提供されるため、タイムゾーンの時刻は表示されません。

最初は、上記のコードを使用せずにc#タイムスタンプを渡そうとしたところ、次の質問が見つかりました。MicrosoftJSON日付をフォーマットするにはどうすればよいですか?しかし、JSONが何であるかわからず、何ができるかを導き出すことができませんでした。JSONを使用する方が簡単ですか?もしそうなら、誰かが私を導くことができますか?どうもありがとうございます


編集:解決策-サーバー側でユニバーサルタイムを使用しませんでした。サーバーサイドコードはそのままにしておきました。私がしたのはこれだけです:

new Date(timestamp).toUTCString()
4

3 に答える 3

11

あなたがすべきことは次のとおりです。

  • サーバーでは常に UTC 時間を使用する
  • 現在行っているように、UTC 時刻を単位タイム スタンプとしてブラウザーに送信します。
  • ブラウザでタイムスタンプを現地時間に変換する

使用されるタイムスタンプは次を表します: 2012-04-11T15:46:29+00:00:

var d = new Date ( 1334159189000 );
// gives you back 2012-04-11T15:46:29+00:00 in a slightly different format, but the timezone info matches UTC/GMT+0
d.toUTCString();
// gives you back your local time
d.toLocaleString();

jsfiddle を作成して、想定どおりの動作をすることを示しました:
http://jsfiddle.net/t8hNs/1/

</p>

于 2012-04-11T15:27:21.730 に答える
4

使用する

var currentDate = new Date();
//get off set from your browser
var offset = Date.getTimezoneOffset();
于 2012-04-11T15:55:34.207 に答える