正しい日付かどうかをチェックする (IsDate)
スポンサーリンク
指定した年・月・日が正しい日付かどうか判断するようなエラーチェックが必要になる場合があります。VB で言えば IsDate 関数のようなメソッドです。
Microsoft.VisualBasic 名前空間配下に IsDate メソッドは存在するものの、この IsDate メソッドは DateTime.Parse メソッドに対して例外処理を行っているだけです。初回での例外クラスのインスタンスが生成されるまで、プログラムの制御が止まってしまいますので、ユーザーフレンドリとは言えません。
.NET Framework 2.0 では、System.DateTime 構造体の TryParse メソッドを使うことができますが、.NET Framework 1.1 までは TryParse メソッドがないため自作の判定メソッドを書く他に回避方法はありません。
サンプルコード
以下にサンプルコードを示します。
VB.NET 全般
Option Strict On Public NotInheritable Class Validation #Region " IsDate メソッド " ''' ------------------------------------------------------------------------------ ''' <summary> ''' 指定した年・月・日が正しい日付であるかどうかを返します。</summary> ''' <param name="iYear"> ''' 検査対象となる年。</param> ''' <param name="iMonth"> ''' 検査対象となる月。</param> ''' <param name="iDay"> ''' 検査対象となる日。</param> ''' <returns> ''' 指定した年・月・日が正しい日付であれば True。それ以外は False。</returns> ''' ------------------------------------------------------------------------------ Public Shared Function IsDate(ByVal iYear As Integer, ByVal iMonth As Integer, ByVal iDay As Integer) As Boolean If (DateTime.MinValue.Year > iYear) OrElse (iYear > DateTime.MaxValue.Year) Then Return False End If If (DateTime.MinValue.Month > iMonth) OrElse (iMonth > DateTime.MaxValue.Month) Then Return False End If Dim iLastDay As Integer = DateTime.DaysInMonth(iYear, iMonth) If (DateTime.MinValue.Day > iDay) OrElse (iDay > iLastDay) Then Return False End If Return True End Function #End Region End Class
使用例は以下のようになります。
VB.NET 全般
' 正しい日付かどうかをチェックする If Validation.IsDate(2004, 02, 29) Then MessageBox.Show("正しい日付です") End If
関連するリファレンス
準備中です。