首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CDate的经典ASP中5月出现的问题

使用CDate的经典ASP中5月出现的问题
EN

Stack Overflow用户
提问于 2017-05-03 15:16:12
回答 1查看 280关注 0票数 1

我们在四月建立了一个日期转换器,

这在4月30日之前一直很好,但现在已经不起作用了。

当月变到五月时,

这是我的静态数据代码。

代码语言:javascript
复制
thisMonth = Month(CDate("April 29, 2017"))

这是可行的,但如果我加上五月,

代码语言:javascript
复制
thisMonth = Month(CDate("May 1, 2017"))

它给了我跟随错误,

微软VBScript运行库 错误“800a000d” 类型错配:“CDate”

这真是奇怪的行为。

顺便说一下,这是在API中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-03 15:42:53

这完全取决于LCID设置了什么,即VBScript是否能够正确地转换日期。

因此,如果要在表单dd mmm, yyyy中转换日期,则需要确保在调用CDate()之前使用Call SetLocale(...) for 20571033

下面是一个重新创建问题的基本示例(根据服务器的系统区域设置,猜测LCID: 1081是在经典ASP中可能设置的内容);

代码语言:javascript
复制
<%
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
%>

输出:

代码语言:javascript
复制
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'

有用的链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43764020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档