在经典ASP中本地化记录集中的日期

时间:2011-12-20 14:29:17

标签: asp-classic

为了更好地为加拿大客户提供服务,我们尝试本地化一些旧的经典ASP页面上显示的日期。我们已经开始使用SetLocale()vb脚本函数取得了一些成功 - 正确处理用户输入日期。

但是,我期望在ADODB.Recordset中返回一个日期以尊重页面的语言环境。请考虑以下代码:

SetLocale 4105

'''
' Get a list of Employees
SQL = "SELECT Firstname, Lastname, HireDate FROM Employee"
Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open Application("ConnectionString")
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = conn
cmd.CommandType = 1
cmd.CommandText = SQL
Set rst = Server.CreateObject("ADODB.Recordset")
rst.CursorLocation = 3
Set rst = cmd.Execute

HireDate 列写入页面时,它将呈现为MM / DD / YYYY(我们的服务器使用的格式)。

有几点需要注意:

  1. 我们需要在同一台服务器上为美国和加拿大客户提供服务(因此无法更改服务器的本地化/区域)。这必须是纯粹的代码解决方案。
  2. 我注意到 rst(“HireDate”) TypeName 是“字段” - 而不是我期望的日期。
  3. 在这种情况下,本地化来自SQL Server的日期值的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

我认为您可能仍需要使用FormatDateTime函数才能使其正常显示。

尝试

FormatDateTime(rst("HireDate").Value, vbShortDate)

答案 1 :(得分:1)

rst(“HireDate”)是一个Field

rst(“HireDate”)。值将是日期

rst(“HireDate”)。Value.ToString(),将在执行语句的机器的语言环境中返回日期作为字符串,几乎可以肯定机器IIS正在运行,其中可能是也可能不是该框sql server正在破坏。

查找GetLocale / SetLocale是一种方式,另一种方法是依赖客户端jaavscript将日期显示为字符串。