我正在使用QTP(因此使用VBScript),我似乎遇到了CDate函数的问题。
当我在马来西亚的同事使用它时,没有问题。 当我在西班牙使用它时,我有以下错误。
现在我要问的是这个函数是否存在任何已知问题,或者是否存在其他相关问题,例如不同语言环境之间的FormatDateTime。
有人知道吗?
提前致谢。
答案 0 :(得分:4)
错误指定了问题。 todateObject.GetROProperty("value")
包含CDate无法识别为日期的值。
您需要首先确定todateObject.GetROProperty("value")
返回的内容,然后确保将其转换为日期。
您可能需要考虑使用DateSerial而不是CDate创建日期,以避免文化差异引起的问题。如果是这种情况,根据您的情况,您可能需要为日,月和年提供单独的字段,以确保订单始终正确。
答案 1 :(得分: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()和针对草率数据输入人员的一些大棒(输入验证)来强制执行“所有人的一个区域设置”。