我有一个WPF窗口,其中包含一个文本框,用户可以在其中输入任何他想要的格式的日期,我必须在日期时间变量中解析它,这很简单吗?我尝试了各种格式,其中一些使用datatime.parse,有些则没有,所以我应该怎么做这些字符串?
一些例如格式(年份不是强制性的):更新:根据评论,我正在修改输入字符串格式....如果用户可以以任何方式输入,但总是一天一个月后跟一年(可选)... ..那可管理吗?
答案 0 :(得分:3)
这不是一个答案,而是一个想法:
为什么你不使用Datepicker,你自己有很多Job试图将每个可能的日期转换成有效的日期,它看起来也不错。请WPF Toolkit的Calender Datepicker Control
答案 1 :(得分:2)
做你正在做的事情是徒劳的。
用户可以插入n
个数字方式添加日期。你将如何判断他插入的格式。
查找日历控件,因为日历在任何地方都是相同的,任何用户无论身在何处都会在其中插入正确的日期。在这种情况下,您可以询问日历selecteddate
或某种财产。
答案 2 :(得分:2)
这个问题没有一个好的答案,尽我所知。
DateTime.Parse
仍然依赖于特定格式的日期。如果你想 - 你可以尝试多个CultureInfos并希望其中一个有效 - 但这只适用于真正让人觉得可以接受的一小部分书面日期。
即使您编写了大量代码来尝试找出常规人员写日期的所有可能方式 - 您仍然存在全球化问题 - 某些日期对于解释有多种方式有效。
04/05< - 那是哪一天?
除非这只是为了做到这一点;我认为最好的办法就是提供一个日期选择器控件或类似的东西,以方便用户并获取日期。没错 - 指出你期望的日期格式。
答案 3 :(得分:2)
DateTime.Parse
适用于当前CultureInfo
,除非您指定其他信息。含义:
21 Sept // invalid
21st Sept // invalid
21 September // acceptable by `en` CultureInfo
21st September // invalid
21 Sep // acceptable by `en` CultureInfo
21/09 // invalid by `en` CultureInfo (09/21 is valid)
21-09 // invalid by `en` CultureInfo (09-21 is valid)
但是如果你想要一个很好的方式让用户输入数据,可以考虑使用一个始终捕获有效值的控件,而不是依赖于用户将手动输入你需要的确切信息。