日期的字符串格式

Bar*_*eld 1 c#

我试图从日志文件日期格式转换为对象dateTime

但是我找不到要转换它的字符串格式?

有人可以帮我格式化:

日志文件行: - 已开始2014年12月28日16:53:47.48"

我的代码:

 string pattern1 = @"(\d+)[/](\d+)[/](\d+)";
 Match match1 = Regex.Match(lineOfLog, pattern1, RegexOptions.IgnoreCase);
 if (match1.Success)
 {
   string dateFormat = "dd/MM/yyyy HH:mm:ss.zzz";
   string dateString = match1.Groups[1].Value;
   DateTime date = new DateTime();
   try
   {
    date = DateTime.ParseExact(dateString, dateFormat, CultureInfo.InvariantCulture);
   }

    catch
    {

    }

  }
Run Code Online (Sandbox Code Playgroud)

异常:"字符串未被识别为有效日期时间

Chr*_*ris 6

这里有三个问题:

  • 正则表达式不会捕获整个日期和时间
  • 你刚刚得到正则表达式结果的一部分(即你得到一个组而不是整个匹配的值)
  • 你的格式字符串zzz应该是FF百分之一或FFF千分之一

尝试这样的事情:

string lineOfLog = "- Started 28/12/2014 16:53:47.48";
string dateFormat = "dd/MM/yyyy HH:mm:ss.FF";           
string pattern1 = @"(\d+)/(\d+)/(\d+) (\d+):(\d+):(\d+)\.(\d+)";

Match match1 = Regex.Match( lineOfLog, pattern1, RegexOptions.IgnoreCase );
if( match1.Success )
{
    var dateString = match1.Value; // note the change here
    var d = DateTime.ParseExact( dateString, dateFormat, CultureInfo.InvariantCulture );
}
Run Code Online (Sandbox Code Playgroud)

请注意,您可以()完全省略它们,它们确实没有任何好处,但它们确实使正则表达式更容易阅读(恕我直言).

  • 这就是答案.我打算回答同样的问题.1更改:dd/MM/yyyy HH:mm:ss.FF,毫秒部分应根据传入的毫秒数.例如,对于28/12/2014 16:53:47.48,使用dd/MM/yyyy HH:mm:ss.FF和28/12/2014 16:53:47.481使用dd/MM/yyyy HH:mm: SS.FFF (2认同)