使用不同语言环境的CDate函数

时间:2013-01-03 14:55:23

标签: date vbscript locale qtp

我正在使用QTP(因此使用VBScript),我似乎遇到了CDate函数的问题。

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

enter image description here

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

有人知道吗?

提前致谢。

2 个答案:

答案 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()和针对草率数据输入人员的一些大棒(输入验证)来强制执行“所有人的一个区域设置”。