将UTC转换为东部时区

use*_*121 6 c# timezone

我有UTC时间戳以UTC(字符串类型).我希望将此时间戳转换为东部时间.问题是当我在UTC时间戳上调用DateTime.Parse或Convert.ToDateTime时,它将它转换为我的本地时间,即中心时间.

我如何获取字符串时间戳并将其转换为东部时间,而不管服务器运行的本地时间如何?

Mat*_*int 11

我会尝试剖析你的问题,但下次请展示一些代码,这样每个人都可以更清楚地看到你的意思.

我有UTC时间戳以UTC(字符串类型).

好的,我认为你的意思是这样的:

string utcString = "2014-02-25T12:34:56.000Z";
Run Code Online (Sandbox Code Playgroud)

这是ISO-8601 UTC时间戳.如果是其他格式,请在评论中告诉我,我会相应地更新答案.

...问题是当我打电话DateTime.ParseConvert.ToDateTime在UTC时间戳上,它将它转换为我当地的时间,即中央时间.

DateTime utcDateTime = DateTime.Parse(utcString,
                                      CultureInfo.InvariantCulture,
                                      DateTimeStyles.RoundtripKind);
Run Code Online (Sandbox Code Playgroud)

RoundtripKind样式告诉解析器在输入字符串中查找"种类"信息,例如Z表示UTC的信息.结果DateTime将具有原始值,并且其.Kind属性设置为DateTimeKind.Utc.

...我希望这个时间戳转换为东部时间.

现在您已经拥有了UTC DateTime,您可以使用TimeZoneInfo该类轻松转换它.

TimeZoneInfo easternTimeZone = TimeZoneInfo.FindSystemTimeZoneById(
                                                         "Eastern Standard Time");

DateTime easternDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime,
                                                           easternTimeZone);
Run Code Online (Sandbox Code Playgroud)

而已.结果是DateTime包含美国东部时区的当地时间.Unspecified由于时区信息不与DateTime对象一起携带,所以它会很友好.

另请注意,"东部标准时间"是指整个美国东部时区,包括EST和EDT.