在 C# 中查找日期和更改格式

Bar*_*ard 1 c# regex date

我有一个包含不同数据的文本文件。现在我需要替换文件中的多个内容,然后才能正确使用数据。我已经用正则表达式替换了文本。但现在我需要更改日期。但我无法弄清楚如何做到这一点。

日期看起来像这样:"utc": "2017-10-02 19:55:00.205263000 Z" 我想为这种日期格式的所有出现获得这个结果: "utc": "2017-10-02 19:55:00"

我尝试使用以下代码:

string pattern = @"{0:yyyy-mm-dd hh:mm:ss.fff Z}";
string replacement = "{0:yyyy-mm-dd hh:mm:ss";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(theInputTextFile, replacement);
Run Code Online (Sandbox Code Playgroud)

是否不能将日期格式与正则表达式一起使用。或者我在我的代码中犯了错误?

我使用了这里的信息,用于日期格式

Abd*_*hir 5

实际上,您可以给 Regex.Replace 方法一个委托,以便您可以转换其格式。检查此页面中的示例:https : //msdn.microsoft.com/en-us/library/cft8645c(v=vs.110).aspx

下面是一个代码示例,它查找按照您在问题中所写的格式设置的日期并替换为新格式:

class Program
{
    static void Main()
    {
        string text = " dasd arew 2017-03-11 12:25:56.345 Z 2017-03-11 12:25:56.345 Z das tfgwe 2017-03-11 12:25:56.345 Z";
        string pattern = @"\d{4}\-\d{2}\-\d{2}\s\d{2}\:\d{2}\:\d{2}\.\d{3}\sZ";
        Regex r = new Regex(pattern);
        var res = r.Replace(text, new MatchEvaluator(ConvertDateFormat));
        Console.WriteLine(res);
    }

    static string ConvertDateFormat(Match m)
    {
        var mydate = DateTime.Parse(m.Value);
        return mydate.ToString("yyyy-MM-dd hh:mm:ss");
    }

}
Run Code Online (Sandbox Code Playgroud)