计算出生日期的年龄

时间:2013-06-01 16:46:11

标签: vb.net time string-formatting

我有2个组合框和2个文本框。我的第一个组合框包含1月,2月等格式的月份,另一个组合框包含1到31的数字。我的第一个文本框是txtyear。一旦用户将出生年份输入txtyear,变量BOD将等于此。

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

我上一个文本框的目的是处理当光标失去焦点txtyear时将会计算的用户的年龄。

任何人都可以帮助计算年龄。

6 个答案:

答案 0 :(得分:9)

这里确实有两个问题:

  1. 如何将字符串输入转换为DateTime对象
  2. 如果您的数据格式正确,如何计算年龄。
  3. 我会让你按照其他人的说明使用TryParseExtract,这绝对是正确的方法。

    从DOB确定某人的年龄时,请尝试使用:

    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
    

    这是杰夫阿特伍德非常受欢迎的问题How do I calculate someone's age

    的最佳答案的vb版本

    我写了一篇关于calculating age from dob的博客文章。

答案 1 :(得分: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

答案 2 :(得分:1)

使用Visual Studio 2012时,这是一种技术 VB.NET语言

Private Sub dtpBOfD_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtpBOfD.ValueChanged

        lblAge.Text = Age(dtpBOfD.Value)

    End Sub

    Public Shared Function Age(DOfB As Object) As String
        If (Month(Date.Today) * 100) + Date.Today.Day >= (Month(DOfB) * 100) + DOfB.Day Then
            Return DateDiff(DateInterval.Year, DOfB, Date.Today)
        Else
            Return DateDiff(DateInterval.Year, DOfB, Date.Today) - 1
        End If
    End Function

答案 3 :(得分: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

答案 4 :(得分:0)

完整年龄信息的

在c#.`

中使用此代码
public string calculateDays(int day, int Month, int year)
    {           
       int Diffyear;
       int DiffMonth;
       int DiffDay;
       int cuYear=DateTime.Now.Year;
       int cuMonth=DateTime.Now.Month;
       int cuDay=DateTime.Now.Day;
       string Age;
        Diffyear= cuYear-year;
        DiffMonth=cuMonth-Month;
        DiffDay=cuDay-day;
        if ((DiffMonth) < 0)
    {
        Diffyear -= 1;
    }
        if ((DiffDay) < 0)
        {
            DiffMonth -= 1;
            if ((cuMonth - 1) < 8)
            {
                if (((cuMonth - 1) % 2) == 0)
                {
                    if ((cuMonth - 1) == 2)
                        if (cuYear % 4 == 0)
                        {
                            DiffDay = 29 + DiffDay;
                        }
                        else
                        {
                            DiffDay = 28 + DiffDay;
                        }
                    else
                        DiffDay = 30 + DiffDay;
                }


                else

                    DiffDay = 31 + DiffDay;
            }
            else
            {
                if (((cuMonth - 1) % 2) == 0)
                {
                    DiffDay = 31 + DiffDay;
                }
                else
                {
                    DiffDay = 30 + DiffDay;
                }
            }
        }
        if ((DiffMonth) < 0)
        {
            DiffMonth = DiffMonth+12;
        }
        if (Diffyear < 0)
        {
            Diffyear = Diffyear * (-1);
        }
        if ((DiffDay) < 0)
        {
            DiffDay = DiffDay * (-1);
        }

       Age = "Age: " + Diffyear.ToString() + " year, " + DiffMonth.ToString() + " months, " + DiffDay.ToString() + " days";
        return Age;
    }

`

答案 5 :(得分:-2)

Dim d1 As Date

Dim d2 As Date

d1 =格式(dob.Value,“yyyy / MM / dd”

d2 =格式(System.DateTime.Now,“yyyy / MM / dd”)

d = DateDiff(DateInterval.Year,d1,d2)'d-1提供准确的年龄