C# 如何从字符串中获取时区?

C# 如何从字符串中获取时区?,c#,.net,datetime,timezone,C#,.net,Datetime,Timezone,我有一个字符串,其中包含带有时间和时区的日期。 我想将其转换为datetime,并使用字符串中给定的相同时区 我已经尝试将字符串转换为datetime,但它将datetime转换为我的系统时区,这与字符串中给定的时区不同 Convert.ToDateTime("2019-01-20T08:30:00+02:00") 将其转换为我的本地时区,即+05:30。您可以用于此目的,而不是使用日期时间: DateTimeOffset dateTime = DateTimeOffset.Parse("2

我有一个字符串,其中包含带有时间和时区的日期。 我想将其转换为
datetime
,并使用字符串中给定的相同时区

我已经尝试将字符串转换为
datetime
,但它将
datetime
转换为我的系统时区,这与字符串中给定的时区不同

Convert.ToDateTime("2019-01-20T08:30:00+02:00") 
将其转换为我的本地时区,即+05:30。

您可以用于此目的,而不是使用
日期时间:

DateTimeOffset dateTime = DateTimeOffset.Parse("2019-01-20T08:30:00+02:00",
    CultureInfo.InvariantCulture);
不要忘记在using语句中添加以下内容:

using System.Globalization;
为此,您可以使用,而不是
DateTime

DateTimeOffset dateTime = DateTimeOffset.Parse("2019-01-20T08:30:00+02:00",
    CultureInfo.InvariantCulture);
不要忘记在using语句中添加以下内容:

using System.Globalization;

您可以按照@Salah Akbari的回答中的建议提取时间偏移量,但无法确定时区。这里有更多细节:你想用哪种格式打印你的日期你可以按照@Salah Akbari的回答中的建议提取时间偏移量,但你不能确定时区。这里的更多细节:值得注意的是,您所谈论的是时间偏移,而不是时区。区别在于:大多数时区每年更改其偏移量两次(夏令时)。在.NET中,时区由TimeZoneInfo类表示,并由字符串id标识。值得注意的是,您谈论的是时间偏移,而不是时区。区别在于:大多数时区每年更改其偏移量两次(夏令时)。时区由.NET中的TimeZoneInfo类表示,并由字符串id标识。