解析用户输入的时间字符串为DateTime / TimeSpan类(C#)

时间:2011-01-08 08:09:09

标签: c# parsing datetime string

我有用户输入的时间,需要解析为DateTime或TimeSpan(日期并不重要)。例如,需要能够解释

“8a”,“0800”,“8am”,“8 am”,“8:00 a”,“8:00 am”=>如“08:00”

我尝试过DateTime.ParseExact方法,但它依赖于小时和分钟之间的冒号分隔符。因此,上述前4个案例失败。 TimeSpan也依赖于冒号。

如何创建一种相对强大的方式来处理用户进入时间的多种方式?一个想法是为System.Globalization.DateTimeFormatInfo创建详尽的格式化可能性列表。但我不确定如何处理角色'a'或'am'等。

想法。

2 个答案:

答案 0 :(得分:2)

前四种情况很好:

  • var dateTime = DateTime.ParseExact( “8A” .Replace( “一”, “我”), “HTT” System.Globalization.CultureInfo.CurrentCulture);
  • var dateTime = DateTime.ParseExact( “0800”, “HHMM”, System.Globalization.CultureInfo.CurrentCulture);
  • var dateTime = DateTime.ParseExact( “早上8点”, “HTT” System.Globalization.CultureInfo.CurrentCulture);
  • var dateTime = DateTime.ParseExact(“8 am“,”h tt“, System.Globalization.CultureInfo.CurrentCulture);

查看this以获取不同的toString匹配

答案 1 :(得分:1)

为什么不改变一点UI

1-有两个组合框用于选择时间1-12个数字

用于选择AM / PM的2-秒组合框,默认为AM。

通过这种方式,您可以更好地控制时间格式,而不需要根据时间格式编写大量分支代码。