使用不同区域设置的CDate函数

使用不同区域设置的CDate函数,date,vbscript,locale,qtp,Date,Vbscript,Locale,Qtp,我使用的是QTP(因此是VBScript),我似乎对CDate函数有问题 当我在马来西亚的同事使用它时,没有问题。 当我在西班牙使用它时,我有以下错误 现在我要问的是,这个函数是否存在已知问题,或者其他相关问题,比如不同地区之间的FormatDateTime 有人知道吗 提前感谢。错误指定了问题所在todateObject.GetROProperty(“值”)包含一个不能识别为日期的值 您需要首先确定todateObject.GetROProperty(“值”)返回的内容,然后确保可以将其转换

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

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

现在我要问的是,这个函数是否存在已知问题,或者其他相关问题,比如不同地区之间的FormatDateTime

有人知道吗


提前感谢。

错误指定了问题所在<代码>todateObject.GetROProperty(“值”)包含一个不能识别为日期的值

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


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

错误指定了问题所在<代码>todateObject.GetROProperty(“值”)包含一个不能识别为日期的值

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

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

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

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

谢谢丹尼尔的快速回答。那么,是否因为我在FormatDateTime中使用了值2,所以它使用了每个国家的区域设置?“我也应该改变吗?”pixie我不知道。但是,基于错误消息的代码的问题是CDate。我不知道你在传递什么价值观,但Ekkehard的问题可能与你的具体问题有关。他的答案毕竟比我的好。+1因为分别获取(和验证)日期部分并通过DateSerial构建日期是一个确定的策略,而我的方法只在特定条件下有效。我也这么认为。。。您的方法更好,但需要重新编码;)愿景与中间解决方案。谢谢大家!谢谢丹尼尔的快速回答。那么,是否因为我在FormatDateTime中使用了值2,所以它使用了每个国家的区域设置?“我也应该改变吗?”pixie我不知道。但是,基于错误消息的代码的问题是CDate。我不知道你在传递什么价值观,但Ekkehard的问题可能与你的具体问题有关。他的答案毕竟比我的好。+1因为分别获取(和验证)日期部分并通过DateSerial构建日期是一个确定的策略,而我的方法只在特定条件下有效。我也这么认为。。。您的方法更好,但需要重新编码;)愿景与中间解决方案。谢谢大家!我知道这也是一个解决办法。谢谢你Ekkehard。顺便说一句。。。这是用于live VBScript的控制台还是shell?我可以看出这也是一个解决方案。谢谢你Ekkehard。顺便说一句。。。这是用于live VBScript的控制台还是shell?请看一下我的CDateLocale解决方案:这篇文章来自很久以前,但我经常看到这种问题,但没有得到回答。看一看:看一看我的CDateLocale解决方案:这篇文章是很久以前写的,但我经常看到这种问题,没有得到回答。看看: