2013-01-12 106 views
0

也許它聽起來有點奇怪,但我實際上知道這個問題的解決方案。我最初的解決方案不起作用,我真的想要爲什麼。它是一個Asp.Net MVC應用程序。將DateTime轉換爲UTC並返回

這不起作用:

 public static DateTime ConvertToUTC(String userTimeZone, DateTime date) 
    { 
     var result = TimeZoneInfo.ConvertTimeToUtc(date, TimeZoneInfo.FindSystemTimeZoneById(userTimeZone)); 

     return result; 
    } 

    public static DateTime ConvertToUserTime(string userTimeZone, DateTime date) 
    { 
     var result = TimeZoneInfo.ConvertTimeFromUtc(date, TimeZoneInfo.FindSystemTimeZoneById(userTimeZone)); 

     return result; 
    } 

我無法將時間轉換回它的原始時間。

該做的工作:

public DateTime ConvertToUTC(String userTimeZone, DateTime date) 
    { 

     var result = TimeZoneInfo.ConvertTimeToUtc(result, TimeZoneInfo.FindSystemTimeZoneById(userTimeZone)); 

     return result; 
    } 

    public DateTime ConvertToUserTime(string userTimeZone, DateTime date) 
    { 
     var userTimezoneInfo = TimeZoneInfo.FindSystemTimeZoneById(userTimeZone); 
     var result = date.Add(userTimezoneInfo.BaseUtcOffset); 

     return result; 
    } 

沒有任何人有一個想法?

+3

很難知道發生了什麼問題,沒有任何想法涉及的時區,輸入,預期的輸出或失敗時的實際輸出。我會建議使用我的Noda Time項目,請注意:) –

回答

0

對於這個問題,.NET 3.5中引入了一個特殊的DataType:DateTimeOffset它在功能上與DateTime類似,但它也存儲UTC偏移量。