1

我正在使用 QTP(因此是 VBScript),我似乎对 CDate 函数有问题。

当我在马来西亚的同事使用它时,没有问题。当我在西班牙使用它时,出现以下错误。

在此处输入图像描述

现在我要问的是这个函数或任何其他相关的问题,如不同语言环境之间的 FormatDateTime 是否存在任何已知问题。

有人知道这个吗?

提前致谢。

4

2 回答 2

4

CDate() 尝试将其输入转换为日期,同时考虑到区域设置。看:

>> SetLocale "en-us"
>> WScript.Echo GetLocale()
>> WScript.Echo 1, CDate("1 dec 2011")
>> WScript.Echo 2, CDate("1 dez 2011")
>>
1033
1 01.12.2011
Error Number:       13
Error Description:  Type mismatch
>> SetLocale "de"
>> WScript.Echo GetLocale()
>> WScript.Echo 3, CDate("1 dez 2011")
>> WScript.Echo 4, CDate("1 dec 2011")
>>
1031
3 01.12.2011
Error Number:       13
Error Description:  Type mismatch
>>

“en-us”下的 CDate() 理解“dec”,但在“dez”上窒息;“de”与“dez”一起使用,但不适用于“dec”。

解决您的问题的最小影响策略可能是通过使用 SetLocale() 和一些大棒(输入验证)来针对草率的数据输入人员强制执行“一个区域设置”。

于 2013-01-03T15:43:05.867 回答
4

错误说明了问题。todateObject.GetROProperty("value")包含CDate不能识别为日期的值。

您需要首先确定返回的内容todateObject.GetROProperty("value"),然后确保可以将其转换为日期。

您可能需要考虑使用DateSerial而不是 CDate 创建日期,以避免文化差异引起的问题。如果是这种情况,根据您的情况,您可能需要为日、月和年提供单独的字段,以确保顺序始终正确。

于 2013-01-03T15:21:13.283 回答