我寫了兩個擴展方法將時間從本地時間轉換爲UTC並返回。這是我有:轉換時區的c#擴展方法
public static DateTime ConvertUserTimeToUTCTime(this DateTime TheUserTime, string TheTimezoneID)
{
TheUserTime = new DateTime(TheUserTime.Year, TheUserTime.Month,
TheUserTime.Day, TheUserTime.Hour, TheUserTime.Minute,
TheUserTime.Second, DateTimeKind.Local);
TimeZoneInfo TheTZ = TimeZoneInfo.FindSystemTimeZoneById(TheTimezoneID);
TimeSpan TheOffset = TheTZ.GetUtcOffset(TheUserTime);
DateTimeOffset TheUTCTimeOffset = new DateTimeOffset(
TheUserTime, TheOffset).ToUniversalTime();
DateTime TheUTCTime = new DateTime(TheUTCTimeOffset.Year,
TheUTCTimeOffset.Month, TheUTCTimeOffset.Day, TheUTCTimeOffset.Hour,
TheUTCTimeOffset.Minute, 0, DateTimeKind.Utc);
return TheUTCTime;
}
public static DateTime ConvertUTCTimeToUserTime(this DateTime TheUTCTime,
string TheTimezoneID)
{
TimeZoneInfo TheTZ = TimeZoneInfo.FindSystemTimeZoneById(TheTimezoneID);
DateTime UTCTime = new DateTime(TheUTCTime.Year, TheUTCTime.Month,
TheUTCTime.Day, TheUTCTime.Hour, TheUTCTime.Minute, 0, DateTimeKind.Utc);
DateTime TheUserTime = TimeZoneInfo.ConvertTime(UTCTime, TheTZ);
return TheUserTime;
}
我在我的應用程序中使用這兩個很頻繁,我想知道他們是否線程安全。另外,將這兩個方法放在抽象類中,然後讓所有涉及時間操作的類都繼承自這個抽象類,會有什麼好處嗎?
感謝您對此次轉換主題的建議。
我通常把我所有的擴展方法到一個單一的類,幷包括名字空間,無論我需要一個擴展方法。這樣任何可能需要這個擴展的DateTime對象都可以訪問它們。我討厭爲此燒基類,因爲它可以在運行時「混入」。 – 2012-03-02 18:29:13