【发布时间】:2016-07-14 17:36:34
【问题描述】:
我正在尝试根据日期计算年龄。这在服务器计算机上工作正常,但在报告错误“字符串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)"
【问题讨论】:
-
日期从何而来?用户输入?
-
日期来自服务器输入的数据库,以上日期只是为了说明。
-
我假设(希望?)它们在数据库中存储为
DateTime?为什么要打扰字符串呢? -
如果它们以 DateTime 的形式存储在数据库中,为什么还要使用字符串呢?
-
他们当然可以,而且你在正确解析的轨道上,你只需要知道格式。不过,这个问题仍然有效 - 为什么要使用字符串呢?