从两个日期vb.net计算年龄

时间:2016-03-27 09:20:09

标签: vb.net date datetime

我正在尝试从日期计算年龄。这在服务器计算机上运行良好,但在特定客户端上没有报告错误“字符串07/21/2016无法转换为日期”。我发现服务器的语言环境设置为en-US,错误语言环境的客户端设置为en-UK。我尝试了下面的代码,无论系统区域设置如何,都可以使年龄计算成为可能,但它没有用。

Dim var as string = "07/30/2010"
Dim dob As String = Format(CDate(var & " 01:00:00"), "dd-MM-yyyy hh:mm:ss")
Dim dob1 As Date = DateTime.ParseExact(dob, "dd-MM-yyyy hh:mm:ss", System.Globalization.CultureInfo.InvariantCulture)
Dim todayDate As String = Format(Date.Now, "dd-MM-yyyy hh:mm:ss")
Dim todayDate1 As Date = DateTime.ParseExact(todayDate, "dd-MM-yyyy hh:mm:ss", System.Globalization.CultureInfo.InvariantCulture)
lblDob.Text = var & " (" & DateDiff(DateInterval.Year, dob1, todayDate1) - 1 & " yrs)"

2 个答案:

答案 0 :(得分:2)

这就是我简化代码并使其工作的方式:

    Dim userBirthDateText = "07/30/2010"
    Dim userBirthDate = Date.ParseExact(userBirthDateText.Replace("/", "-"), "MM-dd-yyyy", Nothing)
    Dim currentDate = Date.Now
    Dim age = Math.Floor(currentDate.Subtract(userBirthDate).TotalDays / 365)

请注意,我将“/”替换为“ - ”以绕过日期中的“斜杠问题”(此处记录:Why can't DateTime.ParseExact() parse "9/1/2009" using "M/d/yyyy")。

另外:我正在简化关于“如何在多年内获得时间跨度”的部分(我的简化:将它除以365)。如果您想让它更精确,则需要更多工作:Format A TimeSpan With Years

答案 1 :(得分:0)

使用@XavierPena方法时我仍然遇到时间问题,但我使用的全方位方法在所有情况下都有效,如下所示;

nrow(df)
[1] 5733