VB6中的CDate与VB.NET版本有何不同?

时间:2012-08-28 19:05:48

标签: datetime vb6 locale .net

我们最近将一些代码从VB6迁移到了Net 4.代码就是这一行:

If Now<CDate("28-08-2012") Then

我们的一位客户因程序错误而联系了支持人员,并且他的计算机出现了错误,因为他的语言环境设置为英语(美国)。完全相同的代码没有炸弹,而它是VB6。

那么,如何解释这种差异呢?

(我刚刚完成从网络代码中删除所有CDate函数并将其替换为yyyy,mm,dd DateTime构造函数)

1 个答案:

答案 0 :(得分:2)

我认为这里的问题(遗憾的是)在VB6中对CDate过于热心的解析例程。将语言环境设置为英语(美国),VB6(以及VBA)将为这两个表达式返回相同的日期:

CDate("12-13-2000")
CDate("13-12-2000")

他们都返回#12/13/2000#。显然,如果第一个数字不能翻译成一个月(例如13),则假定它是一个月中的某一天(非常糟糕的假设)。

就是这样。