Vb.net 根据给定的出生日期计算年龄
我有两个组合框和两个文本框。我的第一个组合框包含一月、二月等格式的月份,另一个组合框包含从1到31的数字。我的第一个文本框是Vb.net 根据给定的出生日期计算年龄,vb.net,time,string-formatting,Vb.net,Time,String Formatting,我有两个组合框和两个文本框。我的第一个组合框包含一月、二月等格式的月份,另一个组合框包含从1到31的数字。我的第一个文本框是txtwear。一旦用户向txtyear输入出生年份,变量BOD将等于此值 Dim BOD as string BOD = cbomonth.text + "-" + cboday.text + "-" + txtyear.text 我最后一个文本框的目的是处理当光标在txtyear上失去焦点时将计算的用户年龄 任何人都可以帮助计算年龄。这里有一个稍微不同的方法,使用Da
txtwear
。一旦用户向txtyear
输入出生年份,变量BOD
将等于此值
Dim BOD as string
BOD = cbomonth.text + "-" + cboday.text + "-" + txtyear.text
我最后一个文本框的目的是处理当光标在txtyear
上失去焦点时将计算的用户年龄
任何人都可以帮助计算年龄。这里有一个稍微不同的方法,使用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
使用此功能
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
这里有两个问题:
DateTime
对象TryParseExtract
,这绝对是正确的方法
根据出生日期确定某人的年龄时,请尝试使用以下方法:
公共函数GetCurrentAge(ByVal dob As Date)为整数
作为整数的年龄
年龄=今天.年-出生年份
如果(dob>Today.AddYears(-age))则age-=1
回归年龄
端函数
这是杰夫·阿特伍德(Jeff Atwood)非常受欢迎的问题的最佳答案的vb版本
我也写了一篇关于的博客。这里有一个使用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
日期为d1
日期为d2
d1=格式(dob.Value,“yyyy/MM/dd”
d2=格式(System.DateTime.Now,“yyyy/MM/dd”)
d=DateDiff(DateInterval.Year,d1,d2)'d-1提供准确的年龄要获得完整的年龄信息,请在c#中使用此代码`
公共字符串calculateDays(整数天、整数月、整数年)
{
国际年;
每月一次;
国际日;
int cuYear=DateTime.Now.Year;
int cuMonth=DateTime.Now.Month;
int cuDay=DateTime.Now.Day;
弦年龄;
Diffyear=cuYear;
DiffMonth=第个月;
DiffDay=cuDay;
如果((月差)<0)
{
年份-=1;
}
如果((DiffDay)<0)
{
月份-=1;
如果((月数-1)<8)
{
如果(((月-1)%2)==0)
{
如果((月数-1)=2)
如果(第%4年==0)
{
DiffDay=29+DiffDay;
}
其他的
{
DiffDay=28+DiffDay;
}
其他的
DiffDay=30+DiffDay;
}
其他的
DiffDay=31+DiffDay;
}
其他的
{
如果(((月-1)%2)==0)
{
DiffDay=31+DiffDay;
}
其他的
{
DiffDay=30+DiffDay;
}
}
}
如果((月差)<0)
{
DiffMonth=DiffMonth+12;
}
如果(年<0)
{
Diffyear=Diffyear*(-1);
}
如果((DiffDay)<0)
{
DiffDay=DiffDay*(-1);
}
Age=“Age:”+Diffyear.ToString()+“year”、+DiffMonth.ToString()+“months”、+DiffDay.ToString()+“days”;
回归年龄;
}
`这是SO的第一个问题之一。请先努力搜索问题。对不起,先生。我是编程新手。我搜索过,但我不懂大部分代码。然后你问的问题不是很聪明。你可能会得到更多你不懂的答案。这很有意义当然可以。一定要提到已经找到了这些答案,并解释你对它们不了解的地方。张贴你尝试过的代码,并说明为什么它没有达到你希望的效果。谢谢先生告诉我。我会记住这一点,并确保在问问题之前做到这一点。事实上,汉斯,因为问题9是为你准备的C#,这是对VB来说的,这不是完全相同的问题。也就是说,这个问题仍然可以用更好的方式提出。这假设一年中有365天(每四分之一有366个失败(365.25可能大部分时间都有效)),这假设每个月有30天(2月有28天(或29天),并且有多个月31次失败(30.45在大多数情况下已经足够接近了))。下面的答案在这方面要好得多。虽然此代码片段可能会解决此问题,但确实有助于提高您的文章质量。请记住,您将在将来为读者回答此问题,而这些人可能不知道您的代码建议的原因。此代码旨在获得格式化时代的确切年龄年-月-日示例:-22岁4个月4天。对于1994年7月7日出生的人来说,该代码测试良好,适用于所有日期,包括闰年。
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;
}