我正在处理时间表应用程序,我希望用户能够在TextBoxes中输入时间,例如:8 a或8:00 a等,就像在Excel中一样。< / p>
现在,如果您在TextBox中输入 date 然后使用DateTime.TryParse,则可以以多种格式输入(2007年1月31日; 2007年1月31日; 2007年1月31日) ; 2007年1月31日;等等。).NET将把它弄清楚并将其变成DateTime。
但是当我在类似“8 a”或“8:00 a”的字符串上使用DateTime.TryParse时,它不理解它。
我知道我可以使用ParseExact,但我想知道是否有更灵活的解决方案。我希望.NET从“8 a”或“8:00 a”获得8:00a,并将日期组件保留为默认的1/1/0001。
答案 0 :(得分:4)
你总是可以欺骗系统(很容易):
DateTime blah = DateTime.Parse("1/1/0001 " + myTimeString);
我自己也做过类似的事。
答案 1 :(得分:3)
我会重新考虑您的UI功能,并将其替换为两个组合框或其他形式的时间选择器。
最终,即使是世界上最好的时间解析器仍然无法通过白痴用户测试。
除此之外,Parse.Exact就是你所需要的。
答案 2 :(得分:3)
来想一想,没关系。我只是注意到,如果我使用“am”和“pm”而不是“a”和“p”,它可以正常工作。它假定今天的日期,而不是默认的1/1/0001,但这对我的目的来说不是问题。
(尽管如此,欢迎使用“a”和“p”工作的任何合理简单的解决方案。)
答案 3 :(得分:0)
您可以使用验证或验证的事件来捕获文本并添加“m”。