我的输入是一个表示机器执行时间和日期的字符串。问题是此字符串格式错误,因此我无法使用DateTime.Parse
将其转换为DateTime
对象。
输入示例:
2014-01-07-15.26.46.000452
我需要将它转换为我可以使用的东西(用空格替换最后的' - ',用':'替换前2'。'),如下所示:
2014-01-07 15:26:46.000452
我认为我应该使用正则表达式来解决这个问题,因为我需要替换特定位置的字符,因此myString.Replace
不会有任何好处。不幸的是,我使用正则表达式的知识几乎没有,我找不到任何与我的问题相符的例子。
任何人都可以帮我解决这个问题吗? (另外,我想解释一下如何以及为什么这个正则表达式起作用)
答案 0 :(得分:5)
您可以使用DateTime.ParseExact
Custom Date and Time Format Strings来解析它DateTime dt = DateTime.ParseExact( "2014-01-07-15.26.46.000452",
"yyyy-MM-dd-H.m.s.ffffff",
System.Globalization.CultureInfo.InvariantCulture);
答案 1 :(得分:2)
它看起来不是很漂亮,但完成了这项工作:
string yourString = "2014-01-07-15.26.46.000452";
string newString = Regex.Replace(yourString, @"(\d+)-(\d+)-(\d+)-(\d+).(\d+).(\d+).(\d+)", "$1-$2-$3 $4:$5:$6.$7");
除了周围的胡言乱语之外,它只会削减所有数字,并构建你想要的日期。