最終更新日 2006 年 5 月 17 日
サンプル コードのダウンロード (vbmigtips_DateTime.msi, 491 KB)
※ このサンプルをインストールするには Visual Studio 2005 が必要です。
今回、年齢の算出方法と指定した年がうるう年か否かの判別方法について紹介します。
年齢を算出する方法
図1 のように、指定した年月日 (生年月日) を元に年齢を算出するアプリケーションを作成する方法を紹介します。
図 1
Visual Basic 6.0 では、DeteDiff 関数を使用し、Visual Basic .NET 以上では DateDiff メソッドを使用します。実装コードは以下のとおりです (Visual Basic 2005 での実装例です) 。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim birthDat As Date = Me.DateTimePicker1.Text
Dim today As Date = Date.Now.Date()
Dim age As Integer
age = DateDiff(DateInterval.Year, birthDat, today)
If CType(today.ToString("MMdd"), Integer) < CType(birthDat.ToString("MMdd"), Integer) Then
age = age - 1
End If
Me.txtAge.Text = age
End Sub リスト1
上記 (リスト1) の「Dim birthDat As Date = Me.DateTimePicker1.Text」では指定した生年月日を格納し、「Dim today As Date = Date.Now.Date()」で現在の日付を格納します。「age = DateDiff(DateInterval.Year, birthDat, today)」で時間間隔の数を求めます。これにより、何年が経過したか取得することができ、現在の年齢を取得することができます。「If CType(today.ToString("MMdd"), Integer) < CType(birthDat.ToString("MMdd"), Integer) Then ... End If」では、指定した月日がすでに経過したか否かを判断し、まだ経過していない場合は、「age = age - 1」により年齢を取得します。
リスト1 を実装し、「生年月日」欄に年月日を指定し「年齢取得」ボタンをクリックすると、図1 のように年齢を取得することができます。
うるう年か否かを判断する
Visual Basic 6.0 では、指定した年がうるう年か否かを判断する関数はサポートされていません。そのため、下記のコードのように、4 の倍数の年数でかつ、400 の倍数を除いた 100 の倍数でない年どうかを確認して、指定した年がうるう年か否かを判断します。
Dim iYear as Integer = birthDat.Year
If ((iYear Mod 4) = 0 And (iYear Mod 100) <> 0) Or (iYear Mod 400) = 0 Then
Me.Label3.Text = " (うるう年) "
End If リスト2
または、IsDate 関数を使用し、指定した年が 2月29日の日付として判断可能かどうかを調べることでうるう年か否かを判断することができます。
一方、Visula Basic 2005 では、DateTime.IsLeapYear メソッドを使用することで簡単に指定した年がうるう年か否かを判断することができます。今回は、上記で紹介したアプリケーション (図1) の「生年月日」欄に指定した年がうるう年か否かを判断し、DateTimePicker コントロールの右端に「うるう年」と記述します。実装コードは以下のとおりです。
If System.DateTime.IsLeapYear(birthDat.Year) = True Then
Me.Label3.Text = " (うるう年) "
End If リスト3
上記 (リスト3) を実装し、「生年月日」欄に年月日を指定し「年齢取得」ボタンをクリックすると、指定した年がうるう年か否かを判断し、うるう年の場合、図2 のように「生年月日」欄の右端に「 (うるう年) 」と表示されます。
図 2