2016-07-18 11 views
0

現地時間をJavascriptからC#に変換しようとすると、いくつかの例を見つけるためにS/Oの周りを突っ込んだ。私はこれに対していくつかの異なるアプローチを見いだしていますが、それらのすべてが最終時間を私よりも7時間先にしていますが、私は理解していません。これが起こって、どのようにそれを修正することですなぜなぜC#の解析日時が7時間先ですか?

例えば:

var t = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(1468877118719).ToLocalTime(); 
Console.WriteLine(t) 
7/18/2016 9:25:18 PM//<--output 

または

var t = DateTime.Parse("2016-07-18T21:27:32.513Z"); 
Console.WriteLine(t); 
7/18/2016 9:27:32 PM//output 

また、私は単に

var now = DateTime.Now; 
Console.WriteLine(now); 
7/18/2016 9:39:55 PM//the output is 7 hours ahead. 

を試してみても、誰も教えてもらえますか?

+4

を含むサーバと* nixのワークステーション上で非常に一般的ですが、それはほとんど常にタイムゾーンの問題です。間違いなくあなたのコンピュータはタイムゾーンのUTC + 7にあります –

+2

あなたは現地時間をUTC時間として扱います。それをしないでください(またはあなたの入力として現地時間ではなく、UTC時間を得る)。 – Servy

+0

DateTimeKind.Utcはあなたの問題です。現地時間で入手してください。 – ManoDestra

答えて

1

あなたが見ているのは、UTC値の出力です。

変更

Console.WriteLine(t); 

もちろん
Console.WriteLine(t.ToLocalTime()); 

に、これが唯一の第2のケースで違いを生むだろう。あなたはすでに最初のインスタンスでToLocalTime()と呼んでいます。

+0

私はこれを試して、同じ不一致を得ました。 ? – spb

+0

@spb:コードのコンテキストの現在のタイムゾーンが* UTCになっているからです:[link](https://dotnetfiddle.net/O7Ve16) – GreatAndPowerfulOz

2

これを実行するマシンでは、ローカルクロックがUTCと一致するように設定されています。

これは、いつでもあなたはアウト時間のいくつかの正確な数だ予期しない日付/時間差を取得するOS Xの

関連する問題