変換時刻をユーザーのタイム ゾーンに変換しようとしていますが、「太平洋標準時」などの Windows タイム ゾーン文字列がありません。私が持っているのは、「-07:00」などの文字列オフセットだけです。タイムスパンを作成する必要があるようです。この文字列を手動で解析する唯一の方法はありますか? 文字列オフセットを使用して時間を変換する方法があるはずですが、何かが足りないのかもしれません。
私はこれを持っていますが、タイムゾーンが必要です。代わりにオフセットを使用するように変更しようとしていますが、変換用に作成されたタイムスパンを確認でき、タイムスパンへのオフセットを取得する必要があります。
static void Main(string[] args)
{
var currentTimeInPacificTime = ConvertUtcTimeToTimeZone(DateTime.UtcNow, "Pacific Standard Time");
//TimeSpan ts = new TimeSpan("-07:00");
Console.ReadKey();
}
static DateTimeOffset ConvertUtcTimeToTimeZone(DateTime dateTime, string toTimeZoneDesc)
{
if (dateTime.Kind != DateTimeKind.Utc) throw new Exception("dateTime needs to have Kind property set to Utc");
TimeSpan toUtcOffset = TimeZoneInfo.FindSystemTimeZoneById(toTimeZoneDesc).GetUtcOffset(dateTime);
var convertedTime = DateTime.SpecifyKind(dateTime.Add(toUtcOffset), DateTimeKind.Unspecified);
return new DateTimeOffset(convertedTime, toUtcOffset);
}