如何使用C#和Regex提取此日期字符串并将其转换为DateTime?

时间:2012-01-09 15:57:43

标签: c# regex datetime

下面的代码无法提取日期文本并将其转换 - 这就是我到目前为止所尝试的:

var inputText = "some words 2012-01-06 13-32-40 some words";

string pattern = "d{4}-d{2}-d{2} d{4}-d{2}-d{2}";
var regex = new Regex(pattern);
Match match = regex.Match(inputText);

// it should find the "2012-01-06 13-32-40" text  
DateTime result;
if (match.Success)
{
   result = DateTime.Parse(match.Value);
}

如何编写正则表达式模式以便提取日期字符串部分以及如何将此字符串转换为DateTime?

我试过了:

IFormatProvider theCultureInfo = new System.Globalization.CultureInfo("en-GB", true);

result = DateTime.ParseExact(match.Value, "yyyy-MM-dd hh-mm-ss", theCultureInfo);

谢谢,

1 个答案:

答案 0 :(得分:2)

正则表达式模式将是:

"\d{4}-\d\d-\d\d \d\d-\d\d-\d\d"

此外,你必须像这样解析日期字符串:

DateTime d = DateTime.ParseExact(match.Value, "yyyy-MM-dd HH-mm-ss", CultureInfo.InvariantCulture);

如果时间格式为“13:32:40”,你可以像在你的例子中那样解析它。