检查用户输入是有效日期还是有效的“日期+时间”很容易:.NET 提供DateTime.TryParse
(此外,VB.NET 提供IsDate
)。
现在,我想检查用户是否输入了包含时间组件的日期。因此,当使用德语语言环境时,31.12.2010 00:00
应该可以,但31.12.2010
不应该。
我知道我可以像这样使用DateTime.TryParseExact:
Dim formats() As String = {"d.M.yyyy H:mm:ss", "dd.M.yyyy H:mm:ss", _
"d.MM.yyyy H:mm:ss", "d.MM.yyyy H:mm:ss", _
"d.M.yyyy H:mm", ...}
Dim result = DateTime.TryParseExact(userInput, formats, _
Globalization.CultureInfo.CurrentCulture, ..., result)
但是随后我会硬编码指定日期的德语格式(日点月点年),这被认为是不好的做法,如果我们想要本地化我们的应用程序会带来麻烦。此外,formats
这将是一个包含所有可能组合(一位数、两位数……)的相当大的列表。
有没有更优雅的解决方案?