檢查用戶輸入是有效日期還是有效的「日期+時間」很容易:.NET提供了DateTime.TryParse
(此外,VB.NET還提供了IsDate
)。DateTime:要求用戶輸入時間組件
現在,我想檢查用戶是否輸入日期,包括時間部分。所以,在使用德語語言環境時,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
將是所有可能組合(一位數,兩位數......)的相當大的列表。
有沒有更優雅的解決方案?
我目前使用'則IsDate(userInput)'和'Regex.IsMatch結合(userInput, 「\ d:\ d」)',它大概會對於我們將來可能支持的每個地區都能很好地工作,但是,這仍然是一個醜陋的黑客。 – Heinzi 2010-04-21 09:42:47