【发布时间】:2018-02-04 08:34:54
【问题描述】:
我正在使用带有时区(东部标准时间)的日期(2018 年 1 月 1 日上午 11:30)并将其转换为 UTC 日期(2018-01-01T16:30:00Z)。原始日期实际上是东部夏令时,因此当开发人员使用 UTC 进行转换时,他们会得到 12:30 PM 而不是 11:30 AM。如果我在 2018 年 8 月 26 日上午 11:30 做,它工作正常。我的时区采用 .NET Windows 格式。
我下面的方法有没有办法从 NodaTime 标准时区获取具有夏令时的正确 UTC?
2018-01-01T16:30:00Z = Helper.GetUtcTimeZone("1/1/2018 11:30 AM", "Eastern Standard Time").ToString();
方法
public static Instant GetUtcTimeZone(DateTime dateTime, string timeZone)
{
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZone ?? TimeZoneInfo.Local.StandardName);
if (timeZoneInfo != null)
{
if (dateTime.Kind == DateTimeKind.Unspecified)
{
dateTime = TimeZoneInfo.ConvertTimeToUtc(dateTime, timeZoneInfo);
}
}
return Instant.FromDateTimeUtc(dateTime);
}
【问题讨论】:
标签: .net datetime timezone dst nodatime