2011-12-20 52 views
4

爲了更好地爲加拿大客戶提供服務,我們試圖本地化某些傳統ASP頁面上顯示的日期。我們已經開始使用SetLocale()vb腳本函數,並取得了一些成功 - 正確處理用戶輸入日期。本地化傳統ASP中記錄集的日期

但是,我期望在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 

當寫列僱傭日期該網頁,它呈現爲MM/DD/YYYY(我們的服務器所使用的格式)。

有幾件事情需要注意:

  1. 我們需要同時服務於美國和加拿大客戶在同一臺​​服務器上(因此改變了服務器的本地化/地區不是一個選項)。這必須是純粹的代碼解決方案。
  2. 我注意到TypeNamerst(「HireDate」)是「字段」 - 不是我所期望的日期。

本方案中本地化來自SQL Server的日期值的正確方法是什麼?

+0

你能否澄清一下,你是說,儘管'setLocale的4105'日期的格式並不如預期?順便說一句,使用'TypeName(rst(「HireDate」)。Value)'你得到了什麼? – AnthonyWJones 2011-12-20 16:32:03

回答

3

我想你可能仍然需要使用FormatDateTime函數來正確顯示它。

嘗試

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

RST( 「僱傭日期」)是現場

RST( 「僱傭日期」)。值是一個日期

RST( 「僱傭日期」)。Value.ToString(),將返回日期作爲機器語言環境中的字符串語句在其上執行,幾乎可以肯定機器IIS正在運行,其中可能或可能不是框sql服務器正在失敗。

以一種方式查找GetLocale/SetLocale uis,另一種方法是依靠客戶端jaavscript將日期顯示爲字符串。

+1

它很容易混淆.NET代碼與做復古的東西不是嗎? VBScript中的原始類型沒有.ToString()方法(或者其他任何方法)。 – AnthonyWJones 2011-12-20 16:34:24

+0

我做過一次VBScript格式? CSTR?無論哪種方式,我想他是在講服務器端。 – 2011-12-21 00:18:12