ここでの他の回答は役に立ちますが、特に太平洋にアクセスする方法はカバーしていません。
public static DateTime GmtToPacific(DateTime dateTime)
{
return TimeZoneInfo.ConvertTimeFromUtc(dateTime,
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));
}
奇妙なことに、「太平洋標準時」は通常「太平洋夏時間」とは異なるものを意味しますが、この場合は一般的に太平洋時間を指します。実際、を使用FindSystemTimeZoneById
してフェッチする場合、使用可能なプロパティの1つは、そのタイムゾーンが現在夏時間かどうかを示すブール値です。
これのより一般化された例は、ユーザーがどこから要求しているかなどに基づいて、さまざまなTimeZonesで必要なDateTimeを処理するために一緒に投げたライブラリで見ることができます。
https://github.com/b9chris/TimeZoneInfoLib.Net
時間のリストはWindowsレジストリから取得されるため、これはWindowsの外部では機能しません(LinuxのMonoなど)。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\
その下にはキー(レジストリエディターのフォルダーアイコン)があります。これらのキーの名前は、渡すものですFindSystemTimeZoneById
。Linuxでは、個別のLinux標準タイムゾーン定義セットを使用する必要がありますが、これについては十分に調査していません。