我使用的是帶時區(東部標準時間)的日期(1/1/2018 11:30 AM)並將其轉換爲UTC日期(2018-01-01T16:30) :00Z)。原始日期實際上是Eastern Daylights Savings,因此當開發人員使用UTC進行轉換時,他們將在12:30 PM而不是11:30 AM。如果我做8/26/2018 11:30上午,它工作正常。我的時區是.NET Windows格式。日期爲UTC時未考慮到夏令時
有沒有一種方法與我下面的方法來獲得正確的UTC時間標準與NodaTime夏令時?
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);
}
另請注意,您提供的第一個日期是* January *,因此它不能在EDT中。 –