我们在四月建立了一个日期转换器,
这在4月30日之前一直很好,但现在已经不起作用了。
当月变到五月时,
这是我的静态数据代码。
thisMonth = Month(CDate("April 29, 2017"))这是可行的,但如果我加上五月,
thisMonth = Month(CDate("May 1, 2017"))它给了我跟随错误,
微软VBScript运行库 错误“800a000d” 类型错配:“CDate”
这真是奇怪的行为。
顺便说一下,这是在API中。
发布于 2017-05-03 15:42:53
这完全取决于LCID设置了什么,即VBScript是否能够正确地转换日期。
因此,如果要在表单dd mmm, yyyy中转换日期,则需要确保在调用CDate()之前使用Call SetLocale(...) for 2057或1033。
下面是一个重新创建问题的基本示例(根据服务器的系统区域设置,猜测LCID: 1081是在经典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'有用的链接
https://stackoverflow.com/questions/43764020
复制相似问题