ユーザー入力が有効な日付または有効な「日付 + 時間」であるかどうかを確認するのは簡単です。.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
すべての可能な組み合わせ (1 桁、2 桁、...) の非常に大きなリストになります。
よりエレガントなソリューションはありますか?