从字符串中提取日期值
问题描述:
论坛。从字符串中提取日期值
我的代码从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问题和谷歌搜索文章拼凑在一起。从我读过的内容来看,我认为它失败了,因为它只需要一个日期字符串。
任何建议的解决方案和/或方向为什么文本阅读找到解决方案,赞赏。
答
您可以使用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());
}
使用正则表达式来获取日期字符串,然后用你的方法将其转换为'DateTime'。 –
前面日期的文本总是一样吗?如果是这种情况,你可以使用简单的子字符串来减少日期 –
'DateTime.ParseExact()'方法将字符串'01/20/2012'精确地分解为日期对象。您试图将包含日期值的整个字符串转换为不可能的日期对象。使用正则表达式提取日期字符串并将其解析为日期对象。 –