我们在4月份创建了一个日期转换器,
哪个在4月30日之前工作得很好,但现在它无法正常工作。
月份变为5月时发生问题,
这是我的静态数据代码。
thisMonth = Month(CDate("April 29, 2017"))
这是有效的,但如果我添加月份,
thisMonth = Month(CDate("May 1, 2017"))
它给了我以下错误,
Microsoft VBScript运行时
错误'800a000d'
类型不匹配:'CDate'
这真是一种奇怪的行为。
顺便说一句,这是在API中。
答案 0 :(得分:1)
这完全取决于LCID设置的内容,以确定VBScript是否能够正确转换日期。
因此,如果您希望以dd mmm, yyyy
格式投放日期,则需要确保在调用{{1}之前使用2057
1033
或CDate()
}}
以下是重新创建问题的基本示例(猜测LCID:1081是您在Classic ASP中可能设置的内容,具体取决于服务器的系统区域设置);
<%
Option Explicit
Const LOCALE_EN_GB = 2057
Const LOCALE_EN_US = 1033
Const LOCALE_HI = 1081
Response.Charset = "UTF-8"
Response.CodePage = 65001
Call Response.Write("Current LCID: " & GetLocale() & "<br /><br />")
Call Response.Write("--- Starting Tests ---<br />")
Call TestDates(LOCALE_EN_GB)
Call TestDates(LOCALE_EN_US)
Call TestDates(LOCALE_HI)
Sub TestDates(loc)
Call SetLocale(loc)
Call Response.Write("LCID: " & loc & " Test Date: " & FormatDateTime(Date(), vbLongDate) & "<br />")
Dim ds: ds = Array("April 29, 2017", "May 1, 2017")
Dim d
For Each d In ds
Call Response.Write(CDate(d) & "<br />")
Next
End Sub
%>
输出:
Current LCID: 2057
--- Starting Tests ---
LCID: 2057 Test Date: 03 May 2017
29/04/2017
01/05/2017
LCID: 1033 Test Date: Wednesday, May 3, 2017
4/29/2017
5/1/2017
LCID: 1081 Test Date: 03 मई 2017
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'CDate'