2016-03-27 48 views
0

我是一名初學者程序員,工作於C#-WPF解析器,該解析器讀取文檔中的行並創建具有多個字段的對象,包括「添加日期」領域。問題:根據我的研究建議,日期採用非標準的西班牙語格式,並且無法進行DateTime.ParseExact工作。這是代碼:將非標準字符串日期解析爲DateTime(ParseExact將不起作用)

 string input = dateAddedStringSPA; //domingo 2 septiembre 2012, 23:54:20 
     string format = "dddd dd MMMM yyy, HH:mm:ss"; 

     CultureInfo cultureInfo = new CultureInfo("es-ES"); 
     DateTime dateAddedSPA; 

     try 
     { 
      dateAddedSPA = DateTime.ParseExact(input, format, cultureInfo);     
      if (dateAddedSPA == DateTime.MinValue) 
      { 
       clipping.DateAdded = DateTime.Now; /*Added this conditional workaround to avoid an exception if parsing fails (and always fails). While this doesn't work every object will have the same date: current. */ 
      } 

      else 
      { 
       clipping.DateAdded = dateAddedSPA; 
      }    
     } 

     catch (Exception) 
     { 
      throw new Exception("Error encountered while adding date."); 
     }    

您可以在輸入側看到的註釋是實際的字符串格式,看起來像這樣。 「格式」是我試圖讓DateTime理解它,我也嘗試在一年後刪除逗號,仍然沒有工作。我不確定這是否是造成問題的文化,但我擔心我的專業知識還不足以知道。問題是,解析失敗,我將日期設置爲1/1/0001 12:00:00 AM。任何暗示可能發生在這裏的事情?

在此先感謝。

+2

你想要「d」而不是「dd」 - 你可能想要「yyyy」。那時它應該工作。 –

+0

就是這樣,喬恩,非常感謝。現在它沒有閱讀一些日期,但至少它讀了一些日期,我知道我應該採取什麼方向。 – Edword

回答

2

爲了使解決方案的更多「通用」,你可以指定多種格式,並使用TryParseExact() .NET/C#方法,如在下面的演示示例代碼段:

CultureInfo cultureInfo = new CultureInfo("es-ES"); 
string[] formats ={"dddd d MMMM yyy, HH:mm:ss", "dddd d MMMM yyy, HH:mm:ss"}; 

string input = "domingo 2 septiembre 2012, 23:54:20"; 
DateTime dt; 
if (DateTime.TryParseExact(input, formats, cultureInfo, DateTimeStyles.None, out dt)); 
{ 
    if (dt<DateTime.Now) 
    Console.WriteLine("OK"); 
    Console.ReadKey(); 
} 

希望這有助於。

相關問題