我正在使用以下功能
将时间转换为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;
答案 0 :(得分:3)
时区ID"东部标准时间" "这真的意味着"东部时间" ...来自TimeZoneInfo.Id
:
Id属性的值通常(但不总是)与StandardName属性的值相同。协调世界时区的标识符是UTC。
所以基本上,这将在冬季给你UTC-5,在夏天给你UTC-4。这通常是你想要的......但你不希望以这种方式执行转换。它不会编译(由于各种原因)并且过于复杂。你应该使用:
TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById(zoneId);
return TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, zone);
您可能还想考虑使用我的Noda Time库,这使得这些库更加万无一失,并且允许您使用更标准的IANA时区数据库。
答案 1 :(得分:0)
你好我通过使用以下找出解决方案我可以得到实际的差异,如果它是否正确请建议
public static DateTime ConvertToTheaterTimeZone(string TheaterTimeZone,DateTime Date) { TimeZoneInfo \ test = TimeZoneInfo.FindSystemTimeZoneById(TheaterTimeZone); DateTime targetTime = TimeZoneInfo.ConvertTime(Date,est); return targetTime; }
var hour =(item.Checkindate - ConvertToTheaterTimeZone(" Eastern Standard Time",DateTime.Now))。TotalHours;