4

2 つのコンボボックスと 2 つのテキストボックスがあります。最初のコンボボックスには 1 月、2 月などの形式の月が含まれ、もう 1 つのコンボボックスには 1 から 31 までの数字が含まれます。最初のテキストボックスはtxtyear. ユーザーが生年月日をtxtyear変数BODに入力すると、これと等しくなります。

Dim BOD as string
BOD = cbomonth.text + "-" + cboday.text + "-" + txtyear.text

最後のテキスト ボックスの目的は、カーソルがフォーカスを失ったときに計算されるユーザーの年齢を処理することtxtyearです。

年齢の計算方法を教えてください。

4

6 に答える 6

11

ここには実際には 2 つの質問があります。

  1. DateTime文字列入力をオブジェクトに変換する方法
  2. データが正しい形式になったら、年齢を計算する方法。

TryParseExtractここに行くのが間違いなく正しい方法である使用方法については、他の人の指示に従ってください。

生年月日から誰かの年齢を判断するときは、これを使用してみてください。

Public Function GetCurrentAge(ByVal dob As Date) As Integer
    Dim age As Integer
    age = Today.Year - dob.Year
    If (dob > Today.AddYears(-age)) Then age -= 1
    Return age
End Function

これは、Jeff Atwood の非常に人気のある質問の上位の回答の VB バージョンです

私は、生年月日から年齢を計算することについてのブログ投稿も書きました。

于 2013-06-01T19:43:23.307 に答える
3

Date クラスの年と月のプロパティを使用する少し異なる方法を次に示します。

Dim BOD as string
BOD = cbomonth.text + "-" + cboday.text + "-" + txtyear.text

Dim dt As Date
If Date.TryParseExact(BOD, "MMMM-dd-yyyy", Nothing, Globalization.DateTimeStyles.None, dt) Then
    Dim Age As New Date(Now.Subtract(dt).Ticks)
    MsgBox(String.Format("Your age is : {0} Years and {1} Months", Age.Year - 1, Age.Month - 1))

Else
    MsgBox("Birth Date is in wrong format")
End If
于 2013-06-01T17:38:31.890 に答える
0

この機能を使用する

Function String2Date(ByVal sDay As String, ByVal sMonth as String, ByVal sYear as String) As Date
   StdDateString = sMonth & " " & sDay & ", " & sYear
End Function

そしてそれを適用する..

Dim dt1 as Date = String2Date(ComboBox2.Text,ComboBox1.Text,txtYear.Text).ToShortDateString
Dim dt2 as Date = Now.ToShortDateString
Dim dt3 as TimeSpan = (dt2 - dt1)
Dim diff as Double = dt3.Days
Dim sAge as String

sAge = Str(Int(diff / 365)) & " Year "
diff = diff Mod 365
sAge = sAge & Str(Int(diff / 30)) & " Month(s)"
diff = diff Mod 30
sAge = sAge & Str(diff) & " Day(s)"

txtAge.Text = sAge
于 2013-06-01T17:41:48.387 に答える
-2

Dim d1 As Date

Dim d2 As Date

d1 = Format(dob.Value, "yyyy/MM/dd"

d2 = Format(System.DateTime.Now, "yyyy/MM/dd")

d = DateDiff(DateInterval.Year, d1, d2)'d-1 は正確な年齢を提供します

于 2015-11-05T07:30:09.397 に答える