给定一个特定的 TimeZoneInfo 实例,如何在指定的时区创建一个新的 DateTime 实例?例如,如果我有:
var tz = TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time");
var date = new DateTime(2017, 1, 1, 0, 0, 0, DateTimeKind.Unspecified);
Console.WriteLine(TimeZoneInfo.ConvertTime(date, tz));
Run Code Online (Sandbox Code Playgroud)
无论我定义什么 DateTimeKind(Utc、本地或未指定),我总是收到 12/31/2016 7:00:00 PM。
我如何声明一个新的日期时间,该日期时间为美国东部标准时间 2017 年 1 月 1 日 0:00:00?
您可以使用 TimeZoneInfo 来检索您的区域
您可以在这里找到时区
var zn = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
Run Code Online (Sandbox Code Playgroud)
要表示您正在使用当地东部标准时间,请使用DateTimeOffset结构而不是 DateTime
DateTimeOffset dateTimeOffset = new DateTimeOffset(new DateTime(2017, 1, 1, 0, 0, 0, DateTimeKind.Unspecified), zn.BaseUtcOffset);
Run Code Online (Sandbox Code Playgroud)
为什么DateTimeOffset
DateTimeOffset is a representation of instantaneous time (also known as absolute time).
| 归档时间: |
|
| 查看次数: |
4127 次 |
| 最近记录: |