Проверить, является ли пользовательский ввод действительной датой или допустимым «дата + время», легко: .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
будет довольно большим списком всех возможных комбинаций (одна цифра, две цифры, ...).
Есть ли более элегантное решение?