2014-09-26 54 views
0

我有一個字符串strdate = 「25/9/2014」 在這裏DD/MM/YYYY format.I要分析它的日期時間像下面字符串爲datetime在C#

DateTime dt; 
      if (DateTime.TryParseExact(strDate, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dt)) 
      { 
       dt = DateTime.Parse(strDate); 
      } 

      Console.WriteLine(dt); 

但它可以不解析,請幫助我。

+5

爲什麼你解析你的字符串兩次? – 2014-09-26 12:13:18

+0

如果嘗試解析返回true - 你已經有dt,你不需要再解析;) – Reniuz 2014-09-26 12:14:19

+2

你需要使用格式'「dd/M/yyyy」'... – petelids 2014-09-26 12:14:38

回答

2

TryParseExact需要完全匹配。

在你的情況下,嘗試dd/M/yyyy作爲輸入是

25/9/2014 
dd/M/yyyy 
9

兩件事情:

1:您的字符串格式應該是"dd/M/yyyy"(雙MM將需要兩個月份數字;一個M將允許1或2個月數字)。

2:您正在解析日期字符串兩次。

您的代碼更改爲:

DateTime dt; 

if (DateTime.TryParseExact(strDate, "dd/M/yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dt)) 
{ 
    Console.WriteLine(dt.ToString("dd/M/yyyy")); 
} 
else 
{ 
    Console.WriteLine("Can't parse it."); 
} 

[編輯]變更Console.WriteLine命令(),以便它在特定的 「DD/M/YYYY」 格式,而不是使用本地系統區域輸出。

+0

謝謝我已經試過你的code.It給我9/25/2014.But在我的字符串25是一天,9是一個月。 – Joydip 2014-09-26 12:24:49

+1

@Joydip這只是因爲'Console.WriteLine(dt.ToString());((隱含的.ToString())默認爲「mm/dd/yyyy」格式。如果您將其更改爲'Console.WriteLine(dt.ToString(「dd/M/yyyy」));'它應該按照您的預期顯示。 – 2014-09-26 12:29:26

+3

@WyattEarp Console.WriteLine(dt.ToString());並不完全是「默認」到「mm/dd/yyyy」 - 結果取決於您的CurrentCulture(在這種情況下,它似乎是en-US) – Arie 2014-09-26 12:32:46

0

變化"dd/MM/yyyy""dd/M/yyyy"

因爲

TryParseExact查找完全匹配