17

現在のタイム ゾーンの略語でラベルを表示する必要があります。現在、私の PC のタイムゾーンは "(GMT) グリニッジ標準時 : ダブリン、エジンバラ、リスボン、ロンドン" に設定されています。その結果、LN は現在英国の夏時間なので、BST が表示されることを望みます。

その情報 (タイムゾーンの略語) は利用できないようです。GMT TimeZoneInfo を見ると、名前に関してわかるのは

Id  "GMT Standard Time"
StandardName    "GMT Standard Time"
DaylightName    "GMT Daylight Time"

「GMT Daylight Time」またはその他の利用可能な Windows タイムゾーン情報から BST に到達する方法はありますか?

4

3 に答える 3

16

このTimeZoneInfoクラスでは、「英国の夏時間」を「GMT 夏時間」と呼んでいるため、それは不可能です。Microsoft がそれを「BST」として保存する場合、それはDaylightNameプロパティになります。

TimeZoneInfo何年も前に BCL ブログでクラスの開発を追跡していましたが、彼らが の値をどのように選択したかについての説明はありませんでしたDaylightName。推測すると、これは特定の都市ではなく「タイム ゾーン」のためです。

Microsoft のタイム ゾーン データベースよりも完全であると考えられているパブリック ドメインのtzdatabaseには、ロンドンの BST が表示されているようです ( source )。これは、タイム ゾーンだけでなく、都市がこのデータセットに含まれているためです。tzdatabase を .Net に移行するNoda Timeというプロジェクトがあり、現在利用可能です。

于 2012-04-12T15:04:27.673 に答える
4

「標準」と表示されているすべてのタイム ゾーンが、夏には適切に夏時間に切り替わることを知っておく必要があります。たとえばTimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time")、標準時間と夏時間の両方を適切に処理できるオブジェクトになります。同じことが、たとえば にも当てはまります"Pacific Standard Time"

于 2016-03-13T23:59:45.390 に答える