我正在尝试从日期计算年龄。这在服务器计算机上运行良好,但在特定客户端上没有报告错误“字符串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)"
答案 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