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