时差不准确
本文关键字:不准确 时差 | 更新日期: 2023-09-27 18:08:24
嗨,我正在使用下面的函数使用偏移量将时间转换为ESt
public static DateTimeOffset ConvertToTheaterTimeZone2(string TheaterTimeZone, DateTimeOffset Date)
{
TimeZoneInfo tzi2 = TimeZoneInfo.FindSystemTimeZoneById(TheaterTimeZone);
TimeSpan offset2 = tzi2.GetUtcOffset(DateTime.Now);
Date = Date.UtcDateTime;
Date = Date.AddMinutes(offset2.TotalMinutes);
return Date;
}
然后使用以下方法使用差时计算,但无法获得准确的小时,PLZ建议使用其他方法
var hour = (item.Checkindate - ConvertToTheaterTimeZone2("Eastern Standard Time", DateTime.Now)).TotalHours;
时区ID "Eastern Standard time "实际上并不表示"Eastern Standard time "。它真正的意思是"东部时间"……From TimeZoneInfo.Id
:
Id属性的值通常(但不总是)与StandardName属性的值相同。协调世界时区的标识符为UTC。
基本上,这将在冬天给你UTC-5,在夏天给你UTC-4。这通常是你想要的……但是您不希望以这种方式执行转换。它无法编译(由于各种原因),而且过于复杂。你应该使用:
TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById(zoneId);
return TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, zone);
您也可以考虑使用我的Noda时间库,它使很多事情更简单,并允许您使用更标准的IANA时区数据库。
你好,我通过以下方法找到了解决方案,我可以得到实际的差异,如果合适,请建议
ConvertToTheaterTimeZone(string TheaterTimeZone, DateTime Date){TimeZoneInfo est = TimeZoneInfo. findsystemtimezonebyid (TheaterTimeZone);DateTime targetTime = TimeZoneInfo。ConvertTime(日期、est);返回targetTime;}var hour = (item。Checkindate - ConvertToTheaterTimeZone("东部标准时间",DateTime.Now)).TotalHours;