我有一个方法可以计算用户时间和UTC时间之间的时间偏移量,它的工作原理如下:
public int GetUserLocalTimeToUTCOffset()
{
DateTime TheUTC = DateTime.UtcNow;
DateTime TheLocal = ConvertUTCTimeToUserTime(TheUTC); //*see below
TimeSpan TheTimeOffset = TheLocal - TheUTC;
return (int)TheTimeOffset.TotalMinutes;
}
public DateTime ConvertUTCTimeToUserTime(DateTime TheUTCTime)
{
TimeZoneInfo TheTZ = TimeZoneInfo.FindSystemTimeZoneById(this.UserTimeZoneID);
// try with "Eastern Standard Time" and "W. Europe Standard Time"
DateTime UTCTime = new DateTime(TheUTCTime.Year, TheUTCTime.Month, TheUTCTime.Day, TheUTCTime.Hour, TheUTCTime.Minute, 0, DateTimeKind.Utc);
return TimeZoneInfo.ConvertTime(UTCTime, TheTZ);
}
如果用户位于美国东部时区,则该方法返回-300(即60 * -5)。然而,如果用户位于欧洲西部时区,则该方法返回59而不是60。这并不是很重要,但我想知道为什么它不返回60以及需要进行哪些更改。
谢谢。