首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日期字符串格式

日期字符串格式
EN

Stack Overflow用户
提问于 2014-12-29 14:18:44
回答 1查看 217关注 0票数 1

我正在尝试将日志文件日期格式转换为对象dateTime。

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

有谁能帮我写一下格式吗:

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

我的代码:

代码语言:javascript
复制
 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
    {

    }

  }

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-29 14:31:43

这里有三个问题:

  • regex没有捕获整个日期和时间
  • 您只是得到正则表达式结果的一部分(也就是说,您得到的是单个组,而不是整个比赛的值)
  • 格式字符串使用zzz,当它应该是FF (百分之一),或者是FFF (数千)。

试着做这样的事情:

代码语言:javascript
复制
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)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27690577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档