从VB6到C#移植CDate(long)函数

4

我被委托将一个旧的VB6程序转换成C#。其中一个我一直在努力移植的函数是从读取自二进制文件的字段计算出生日期:

.BirthDate = CDate((CLng(recPatient.birthDateByte2) * 256) +
                         (recPatient.birthDateByte1 + 366))

我能找到的唯一类似的功能是:
DateTime BirthDate = DateTime.ToDateTime((long)recPatient.birthDateByte2) * 256) 
                                       + (recPatient.birthDateByte1 + 366));

然而,ToDateTime(long)仅返回一个InvalidCastException异常。

现在我可以手动构建字符串,但是我无法在任何地方找到有关VB6的CDate(long)的文档。

我做错了什么?

2个回答

5

尝试使用

  DateTime.FromOADate((double)recPatient.birthDateByte2 * 256 
                     + recPatient.birthDateByte1 + 366)

代替使用CDate(long),这里有一份关于它的文档。虽然它不是来自MS,也不是关于VB6的,但由于所有我所见过的VBA实现都包含了CDate函数,因此我认为这并不会有很大的区别。


0

旧的VB6长整型变成了System.Int32,或者在C#中简单地称为int

C#中的long是System.Int64

double是System.double,它是一种64位浮点变量类型


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接