2017-02-27 36 views
0

我嘗試解析我的字符串datetime,但我得到一個FormatException。ParseExact字符串到DateTime

string date = "27.02.2017 13:03:16 Uhr"; 
action.Date = 
    DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss",CultureInfo.InvariantCulture); 

有人有什麼想法嗎?

+4

' 「DD.MM.YYYY HH:MM:SS 'UHR'」','Exact'意味着確切... –

+0

謝謝@PatrickHofman! –

回答

1

問題是輸入結束時的「Uhr」。如果你像這樣指定你的格式,輸入必須與格式匹配。

在有人添加「Uhr」並且有些人沒有,我建議使用正則表達式提取相關部分。

using System.Text.RegularExpressions; 

Match m = Regex.Match(@"/([\d]{2}\.[\d]{2}\.[\d]{4} +[\d]{2}\:[\d]{2}\:[\d]{2})/", date); 
if (m != null) 
    date = m.Groups[0].Value; 
else 
    // Something wrong with the input here 

然後(除非m爲空),在大多數情況下,您可以將此字符串用作ParseExact-部分的有效輸入。但請注意,正則表達式不會執行任何範圍檢查,因此像Montag, 99.99.9999 99:99:99 Uhr這樣的輸入會導致日期字符串99.99.9999 99:99:99與正則表達式匹配,但無論如何都不是有效的日期時間。

5

你必須逃離Uhr後綴:

string date = "27.02.2017 13:03:16 Uhr"; 
    action.Date = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss 'Uhr'", 
    CultureInfo.InvariantCulture);