C# 时差不准确

C# 时差不准确,c#,C#,嗨,我正在使用下面的函数将时间转换为ESt public static DateTimeOffset ConvertToTheaterTimeZone2(string TheaterTimeZone, DateTimeOffset Date) { TimeZoneInfo tzi2 = TimeZoneInfo.FindSystemTimeZoneById(TheaterTimeZone); TimeSpan offset2

嗨,我正在使用下面的函数将时间转换为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“东部标准时间”实际上并不意味着“东部标准时间”。它的意思是“东部时间”。。。发件人:

Id属性的值通常(但不总是)与StandardName属性的值相同。协调世界时区的标识符为UTC

因此,基本上,这将在冬季提供UTC-5,在夏季提供UTC-4。这通常是你想要的。。。但您不希望以这种方式执行转换。它不会编译(出于各种原因),并且过于复杂。您只需使用:

TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById(zoneId);
return TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, zone);

您可能还想考虑使用我的库,这使得很多这更愚蠢的证明,以及允许您使用更标准的IANA时区数据库。

< P>你好,我用下面的方法找到解决方案,我可以得到实际的区别,如果它合适或不建议,请建议

公共静态日期时间转换器到TheaterTimeZone(字符串TheaterTimeZone,DateTime日期) { TimeZoneInfo est=TimeZoneInfo.FindSystemTimeZoneById(剧院时区); DateTime targetTime=TimeZoneInfo.ConvertTime(日期,est); 返回目标时间; }


var hour=(item.Checkindate-converttothertimezone(“东部标准时间”,DateTime.Now)).TotalHours

您正在使用东部标准时间。我们现在是东部夏时制。@DanielA.White:这个名字并不代表它看起来的样子……“没有准确的时间”并不能描述你所看到的。请给出一个完整的例子,包括你的预期结果和实际结果。“复活节标准时间”是打字错误吗?因为如果不是的话,我真的很想搬到那个地方,所以它总是easter@KevinL:是的,很抱歉这只是一个打字错误:(