C# 日期的字符串格式

C# 日期的字符串格式,c#,C#,我正在尝试从日志文件日期格式转换为对象日期时间格式 但是,我找不到用于转换的字符串格式 有人能帮我了解一下格式吗: 日志文件行:-开始于2014年12月28日16:53:47.48“ 我的代码: string pattern1 = @"(\d+)[/](\d+)[/](\d+)"; Match match1 = Regex.Match(lineOfLog, pattern1, RegexOptions.IgnoreCase); if (match1.Success) { strin

我正在尝试从日志文件日期格式转换为对象日期时间格式

但是,我找不到用于转换的字符串格式

有人能帮我了解一下格式吗:

日志文件行:-开始于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
    {

    }

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

此处有三个问题:

  • 正则表达式不能捕获整个日期和时间
  • 您只得到正则表达式结果的一部分(即,您得到的是单个组,而不是整个匹配的值)
  • 您的格式字符串使用
    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 );
}
请注意,您可以完全省略
()
,它们实际上没有任何好处,但它们确实使正则表达式更易于阅读(IMHO)。

这里有三个问题:

  • 正则表达式不能捕获整个日期和时间
  • 您只得到正则表达式结果的一部分(即,您得到的是单个组,而不是整个匹配的值)
  • 您的格式字符串使用
    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 );
}

请注意,您可以完全省略
()
,它们实际上没有任何好处,但它们确实使正则表达式更易于阅读(IMHO)。

您可以显示当您尝试转换它时,dateString会变成什么吗?不,我遇到一个例外…:(在哪一行出现错误?在这里,您得到的正则表达式是唯一的日期,并且您使用的是datetime解析确切的时间,这可能是原因
(\d+)[/](\d+)[/](\d+)(\d+):(\d+):(\d+)(\d+)(\d+)
使用此正则表达式您在尝试转换日期字符串时显示了什么?不。我遇到了一个异常…:(在哪一行出现错误?在这里,您得到的正则表达式是唯一的日期,并且您使用的是datetime解析精确时间,这也是预期时间的原因,
(\d+)[/](\d+)[/](\d+)(\d+):(\d+)(\d+)(\d+)(\d+)(\d+)
使用此regexThats答案。我将回答相同的问题。1更改:dd/MM/yyyyy HH:MM:ss.FF,毫秒部分应根据传入毫秒。例如,对于2014年12月28日16:53:47.48,使用dd/MM/yyyyy HH:MM:ss.FF,对于2014年12月28日16:53:47.481,使用dd/MM/yyyyyy HH:MM:ss.fft答案。我将回答相同的问题。1更改:dd/MM/yyyy HH:MM:ss.FF,毫秒部分应根据传入毫秒。例如,对于2014年12月28日16:53:47.48,使用dd/MM/yyyy HH:MM:ss.FF;对于2014年12月28日16:53:47.481,使用dd/MM/yyyy HH:MM:ss.FFF