49

.NET では、次のステートメントは異なる値を返します。

Response.Write(
  TimeZoneInfo.ConvertTime(
    DateTime.Parse("2010-07-01 5:30:00.000"),
    TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"))
  );
// displays 7/1/2010 1:30:00 PM

..この...

Response.Write(
  TimeZoneInfo.ConvertTime(
    DateTime.Parse("2010-07-01 5:30:00.000"),
    TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("UTC"))
  );
// displays 7/1/2010 12:30:00 PM

どうしてこれなの?UTC と GMT 標準時は同等だと思いました。


アップデート

さらにテストすると、次のものが同等であるように見えます。

"UTC"

"グリニッジ標準時"

「モロッコ標準時」

一方、夏の間は次の点が異なります。

「GMT標準時」

おそらく私の質問は、「グリニッジ標準時」と「GMT 標準時」が異なるのはなぜですか?

更新終了

4

7 に答える 7

40

GMT は夏時間(DST)に合わせて調整されません。このウェブサイトでは馬の口からそれを聞くことができます。

次のコード行を追加して、問題の原因を確認します。

  Console.WriteLine(TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time").SupportsDaylightSavingTime);

出力: 真。

これは .NET の問題ではなく、Windows の問題です。TimeZoneInfo が使用するレジストリ キーは、HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\GMT Standard Time です。UTCに固執する方がよいでしょう。

于 2010-02-18T22:02:00.710 に答える
26

[私は本当にHans Passantの答えをバックアップしています]

「グリニッジ標準時」を意味するように使用されているように見える「GMT」という用語の使用と、英国/アイルランドで使用されているタイムゾーン (冬の GMT と英国の夏時間との間で切り替わる) について混乱があるようです。夏には、それ自体で明確に定義された名前がないようです!

さらに混乱させるために、MSDN ドキュメントから TimeZoneInfo.GetSystemTimeZonesのサンプル コードを実行し、出力を調べました。

「GMT標準時」タイムゾーンの次の定義を見て非常に驚いた

ID: GMT 標準時
   表示名: (UTC) ダブリン、エジンバラ、リスボン、ロンドン
   標準名: GMT 標準時
   夏時間の名前: GMT Daylight Time ***夏時間があります***
   UTC からのオフセット: 0 時間 0 分
   調整ルールの数: 1
   調整規則:
      0001/01/01 00:00:00 から 9999/12/31 00:00:00 まで
      デルタ: 01:00:00
      3月第5週日曜日 01:00開始
      10 月第 5 週の日曜日の 02:00 に終了

(少なくとも私には) Microsoft でタイムゾーンの定義を担当していた人物が、この問題をさらに悪化させたようです。

彼らは明らかに、英国/アイルランドで使用されているタイムゾーンを説明したかったのですが、ID と表示名に「GMT」と UTC という用語を含む ID を与えました。私は、このタイムゾーンの定義 (名前が何であれ) がUTCではないことを確信しています。1 年の半分は UTC と非常によく似た時期があるかもしれませんが、それだけです!

于 2010-09-21T12:24:58.620 に答える
16

これは、元の質問者が読む可能性が低いが、このトピックについてグーグルで検索した人が見つける可能性のある遅い応答です.

GMT 標準時間GMT 夏時間という名前は、レドモンド以外では不明です。Windows レジストリと呼ばれる動物図鑑にのみ登場する伝説上の動物です。現実の世界では、英国は冬に GMT (グリニッジ標準時) を遵守し、夏に BST (英国夏時間) を遵守します。BST は GMT より 1 時間進んでいます (東向き)。ヨーロッパ人は、少なくとも私が知っている言語では、一般的に「夏時間」ではなく「夏時間」について話します。

ある回答者は、GMT よりも UTC を使用すべきだと述べてます。国際天文学連合からのこのアドバイスは 1935 年にまでさかのぼります。その要点は、1925 年以前は GMT が真夜中ではなく正午から数えられていたため、10 年後であっても、あいまいさの可能性がまだ残っていた可能性があるということでした。しかし、今は少し時代遅れです。過去 80 年間、GMT と世界時という用語はほぼ同義語でした。もちろん、そうではありません。しかし、その違いを説明するには天文学者が必要です。秒ではなく時間に関心がある場合は、おそらく気にしないでしょう。

GMT は、英語圏の国における民間の計時に関するものです。時代遅れではありません。英国、アイルランド、カナダ、さらにはベルギーでも法律で定められています。

Universal Time のさまざまなフレーバーは、天文計時に関するものです。

そして、市民の計時は、最初の質問が何であったかだったと思います.

于 2014-04-15T23:34:02.850 に答える
13

違いは次のとおりです。

お役に立てれば

于 2010-02-18T21:41:02.170 に答える
1

TimeZoneInfoを持つオブジェクトは のに.Id対応"GMT Standard Time"します。.DisplayName"(UTC) Dublin, Edinburgh, Lisbon, London"

このタイム ゾーンでは、冬の間はグリニッジ標準時 (GMT) (UTC+0) が使用され、夏の間は英国夏時間 (BST) (UTC+1) が使用されます。

ここを参照してください

UTC のタイム ゾーンには、.Id"UTC".DisplayNameがあり"(UTC) Coordinated Universal Time"ます。

これらは 2 つの異なるタイム ゾーン設定です。

また、Windows でタイム ゾーンの表示名のリストを見ると、次のようになります。

タイムゾーン一覧

括弧内の値は単なる標準オフセットであるため、UTC には 4 つの異なる設定があるように見えますが、実際には 1 つしかありません。サマータイムが実施されていない場合、他の 3 つのゾーンが UTC を基本オフセットとして使用するだけです。

于 2013-07-02T14:50:47.687 に答える
0

ここでは、協定世界時ゾーンについて説明します。時間枠に高い精度が必要な場合は、UTCが通常使用されるようです。Greenwhich Meantime はかなり近く、UTC との間で使用されます。

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

于 2010-02-18T21:40:52.763 に答える