我有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.Parse或Convert.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.