使用AM / PM标识符解析日期时间

时间:2014-10-06 21:07:57

标签: c# datetime datetime-parsing

我需要解析Oct 3, 2014 10:05 a.m.我熟悉使用DateTime.TryParseExact()使用TT表达式来表达AM或PM。但是,将其修改为T.T.无法将string成功解析为DateTime

这是我的代码:

string dateContent = "Oct 3, 2014 10:05 a.m.";
DateTime parseDate;
bool attempt = DateTime.TryParseExact(content, "MMM d, yyyy hh:mm T.T.", CultureInfo.CurrentCulture, DateTimeStyles.None, out parseDate);

非常感谢任何帮助。如果遗漏任何内容或需要澄清,请告诉我。

1 个答案:

答案 0 :(得分:3)

T.T.格式不是标准格式,因为您可以看到here,所以我的建议是让您通过简单的方式摆脱它:

  

“2014年10月3日上午10:05”。替换(“a.m。”,“AM”)。替换(“p.m。”,“PM”);

<强>更新

一个更通用的解决方案,即通过输入自定义IFormatProvider而不是太过分,就是使用这样的正则表达式:

  

Regex.Replace(dateContent,“([a | p])。(m)。”,“$ 1 $ 2”,RegexOptions.IgnoreCase);

这应该可以解决问题(请注意,我没有附近的c#编译器,很难我没有测试它)。 这样做可以找到模式a.m.p.m.(忽略大小写)并替换为ampm

从那时起,TryParseExact将进一步发挥作用。