我有一個計算時間了用戶的時間和工作原理是這樣的UTC時間之間的偏移量的方法:時區在asp.net偏移
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。不是那麼大的一個biggie,但我想知道爲什麼它不返回60以及我需要做出什麼變化。
謝謝。
ConvertUTCTimeToUserTime中的代碼可能與確定答案有關,因爲它直接涉及計算。 – 2012-01-17 21:46:01
@JeremyS:見編輯,我添加了其他功能。 – frenchie 2012-01-18 08:28:39