无法将我的变量转换为 CDate 或 Serial Date,出现不匹配错误

Cannot convert my variables to CDate or Serial Date, getting Mismatch error

我已经在这里准备了很多关于不匹配错误的帖子,但我尝试的每种格式仍然出现相同的错误。

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 天,但我什至无法将我的变量转换为日期格式来减去它...所以也许有我应该在这里做一些更简单的事情吗?

感谢大家的帮助,非常感谢!好久了reader,第一次发帖

最简单的操作方法是使用 Split(),因为每个值由 Space (Chr(32)) 分隔。

你最终得到的是一个数组,其中包含构成由 Space 字符 (Chr(32)) 分割的字符串的每个元素,因此通过将值重新连接在一起,我们可以构建我们的日期- CDate() 预期的时间,不包括分别为 SunCDT 的第一个和第六个元素,以及重新排序传递给 [=15 的构造字符串中的年份=].

Dim input: input = "Sun Apr 05 00:00:00 CDT 2020"
Dim data: data = Split(input, Chr(32))
'Ignore first and sixth element in the array and build our date value
Dim output: output = CDate(data(1) & " " & data(2) & " " & data(5)) & " " & TimeValue(data(3))
Call Wscript.Echo(output)

输出:

05/04/2020 00:00:00

Note: Result will be based on the user's regional settings as CDate() uses this while parsing a Date string.


有用的链接

  • (解析日期字符串的例子).