Vbscript 无法将变量转换为CDate或序列日期,出现不匹配错误

Vbscript 无法将变量转换为CDate或序列日期,出现不匹配错误,vbscript,Vbscript,我已经在这里准备了很多关于不匹配错误的帖子,但是我尝试的每种格式都会得到相同的错误 Dim calendarDate, sDate, sFinal calendarDate = "Sun Apr 05 00:00:00 CDT 2020" sYear = Right(calendarDate, 4) sDay = Mid(calendarDate,9,2) sMonth = Mid(calendarDate,5,3) If sMonth = "Apr"

我已经在这里准备了很多关于不匹配错误的帖子,但是我尝试的每种格式都会得到相同的错误

Dim calendarDate, sDate, sFinal

calendarDate = "Sun Apr 05 00:00:00 CDT 2020"
sYear = Right(calendarDate, 4)
sDay = Mid(calendarDate,9,2)
sMonth = Mid(calendarDate,5,3)

If sMonth = "Apr" Then sMonth = "04" Else sMonth = sMonth
End if

sDate = sYear & "-" & sMonth & "-" & sDay


sFinal = CDate(sDate)
我得到类型不匹配CDate错误,但是格式应该可以工作吗?我也尝试过MM/DD/YYYY

我试过sFinal=DateSerial(sYear,sMonth,SDay)也不起作用。但是如果你不使用变量

sFinal=DateSerial(“2020”、“04”、“05”)这是可行的。我不明白为什么我的SYear,SMonth,SDay不能工作,因为它们是相同的数字。”

我的最终目标是从日历日期中减去14天,但我甚至无法将变量转换为日期格式来减去它…因此,也许我应该在这里做一些更简单的事情


非常感谢大家提供的帮助!长时间阅读,第一次发布。

最简单的操作方法是将每个值用空格隔开(
Chr(32)

最终得到的是一个数组,其中包含构成字符串的每个元素,该字符串由空格字符分割(
Chr(32)
)因此,通过将值重新连接在一起,我们可以构建我们的日期-时间期望值,不包括第一个和第六个元素,这两个元素分别是
Sun
CDT
,以及在传递给
CDate()
的构造字符串中重新排序年份

Dim输入:输入=“2020年4月5日星期日00:00:00”
尺寸数据:数据=分割(输入,Chr(32))
'忽略数组中的第一个和第六个元素并构建日期值
Dim输出:输出=CDate(数据(1)和“”,数据(2)和“”,数据(5))&“”,时间值(数据(3))
调用Wscript.Echo(输出)
输出:

2020年4月5日00:00:00
注意:结果将基于用户的区域设置,因为
CDate()
在解析
日期
字符串时使用此选项


有用链接
  • (解析日期字符串的示例)

请参阅,以获取有关为什么会出现该错误以及如何修复该错误的解释。基本上,在解析日期之前,您需要删除
Sun
CDT
。感谢您提供的信息,不幸的是,我仍然会使用此方法出现不匹配错误。无需担心!!我没有注释掉我的上一个工作。这对我有用,谢谢太多了!!!谢谢!我刚刚接受了它,很抱歉还是个新手。显然,我还没有足够的声誉来提升它。我明白了这一点,感谢再次联系。问题是由于脚本循环到一个空白记录。必须检查拆分(0)看看它输出了什么,并确保它跳过了最后一条记录。这可能是一个比我所做的更简单的方法。谢谢!我感谢大家对这条记录的反馈。