3

我需要解析Oct 3, 2014 10:05 a.m. 我熟悉使用AM 或 PMDateTime.TryParseExact()TT表达式。但是,将其修改为T.T.不会成功地将其解析stringDateTime.

这是我的代码:

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);

任何帮助将不胜感激。让我知道是否有任何遗漏或需要澄清。

4

1 回答 1

3

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

"2014 年 10 月 3 日上午 10:05".Replace("am", "AM").Replace("pm", "PM");

更新

IFormatProvider一个更通用的解决方案是使用这样的正则表达式,而不是通过进入 custom s 太过分:

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

这应该可以解决问题(请注意,我附近没有 ac# 编译器,我还没有测试它)。这是为了查找模式a.m.or p.m.(忽略大小写)并替换为amor pm

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

于 2014-10-06T21:13:06.070 回答