IsDate("z0260728") を実行するとTrueとなります。
自分の環境 Windows 10, Visual Studio 2026, .NET Framework 4.8.1 では False になります。質問者さんのケースで True になるというのは何かの間違いではないかと思われますが?
何にせよ、ユーザー入力の文字列を、
日付項目としてyyyyMMdd、yyMMdd、和暦等の形式を想定しており、それ以外の値はエラーとする想定です。
とするために、VB.NET の IsDate メソッドを使うのは不適切だと思います。何故なら、以下の Microsoft ドキュメント Information.IsDate(Object) メソッド に書いてあるように、"3:45 PM" とか "March 15, 1981 10:22 AM" なども True と判定されてしまいますので。
yyyyMMdd、yyMMdd、和暦等の特定の形式のみを許容し、それ以外をエラーとする場合、IsDate以外に推奨される日付チェック方法があればご教示ください。
正規表現を使うことを検討してはいかがですか?
または、yyyyMMdd、yyMMdd の形式を yyyy/MM/dd、yy/MM/dd または yyyy-MM-dd、yy-MM-dd に変更しても良いなら DateTime.TryParse メソッドが使えます。
Imports System.Globalization
Module Module1
Sub Main()
Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture("ja-JP")
Dim styles As DateTimeStyles = DateTimeStyles.None
Dim dateResult As DateTime
Console.WriteLine(DateTime.TryParse("2026/07/28", culture, styles, dateResult))
Console.WriteLine(DateTime.TryParse("26/07/28", culture, styles, dateResult))
Console.WriteLine(DateTime.TryParse("2026-07-28", culture, styles, dateResult))
Console.WriteLine(DateTime.TryParse("26-07-28", culture, styles, dateResult))
Console.WriteLine(DateTime.TryParse("R8年7月28日", culture, styles, dateResult))
Console.WriteLine(DateTime.TryParse("令和8年7月28日", culture, styles, dateResult))
Console.WriteLine(DateTime.TryParse("z0260728", culture, styles, dateResult))
End Sub
End Module
' 結果は:
' True
' True
' True
' True
' True
' True
' False