2015-11-13 23 views
2

我有最簡單的方法解析一個字符串到DateTime 但返回類型是DateTimeOffset?爲什麼DateTime.TryParseExact()爲這些輸入字符串返回不同的時區?

我預計輸出爲

2011-01-11 00:00:00 +01:00 
2011-10-11 00:00:00 +01:00 

而是它是

2011-01-11 00:00:00 +01:00 
2011-10-11 00:00:00 +02:00 

爲什麼會出現這種現象?我的測試程序如下。

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine(Parse("20110111").ToString()); 
     Console.WriteLine(Parse("20111011").ToString()); 
     Console.ReadLine(); 
    } 

    public static DateTimeOffset? Parse(string date) 
    { 
     DateTime parsedDate; 
     if (DateTime.TryParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate)) 
     { 
      return parsedDate; 
     } 

     return null; 
    } 
} 

回答

9

它針對當前機器返回TimeZone一小時的差異是由於節約一天光。哪些在十月份不生效,但是在一月份。

+0

@JoelCoehoorn,謝謝你的編輯:) – Habib

+0

爲了擴大這一點 - 本地計算機的時區正在被應用,當'parsedDate'變量被隱式地從DateTime轉換爲DateTimeOffset? ,因爲這就是聲明爲方法的返回類型。 –

相關問題