2016-01-20 144 views
0

論壇。從字符串中提取日期值

我的代碼從Excel文件讀取並得到如下字符串變量「textContainingDate」:

"Employee Filter: All Employees; Time Entry Dates: 01/07/2016-01/07/2016; Exceptions: All Exceptions" 

我想要做的是提取字符串中的日期值。儘管有兩個日期可以作爲日期範圍來讀取,但這兩個日期總是相同的。我的想法是,不管情況如何,我都會對我碰到的第一次約會感到滿意。

var dateTime = DateTime.ParseExact(textContainingDate, "MM/dd/yyyy", CultureInfo.CurrentCulture); 

我嘗試使用上面的語句,我從其他的stackoverflow問題和谷歌搜索文章拼湊在一起。從我讀過的內容來看,我認爲它失敗了,因爲它只需要一個日期字符串。

任何建議的解決方案和/或方向爲什麼文本閱讀找到解決方案,讚賞。

+0

使用正則表達式來獲取日期字符串,然後用你的方法將其轉換爲'DateTime'。 –

+0

前面日期的文本總是一樣嗎?如果是這種情況,你可以使用簡單的子字符串來減少日期 –

+0

'DateTime.ParseExact()'方法將字符串'01/20/2012'精確地分解爲日期對象。您試圖將包含日期值的整個字符串轉換爲不可能的日期對象。使用正則表達式提取日期字符串並將其解析爲日期對象。 –

回答

3

您可以使用Regex.Match獲取您遇到的第一個日期字符串。此方法返回與輸入字符串中的正則表達式模式相匹配的第一個子字符串。

string stringWithDate = "Employee Filter: All Employees; Time Entry Dates: 01/07/2016-01/07/2016; Exceptions: All Exceptions"; 
Match match = Regex.Match(stringWithDate, @"\d{2}\/\d{2}\/\d{4}"); 
string date = match.Value; 
if (!string.IsNullOrEmpty(date)) { 
    var dateTime = DateTime.ParseExact(date, "MM/dd/yyyy", CultureInfo.CurrentCulture); 
    Console.WriteLine(dateTime.ToString()); 
} 

什麼正則表達式\d{2}\/\d{2}\/\d{4}作用:
enter image description here