日期的字符串格式

时间:2014-12-29 14:18:45

标签: 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
    {

    }

  }

例外:“字符串未被识别为有效日期时间

1 个答案:

答案 0 :(得分: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 );
}

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