时差不准确

本文关键字:不准确 时差 | 更新日期: 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;