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)

我究竟做错了什么?

4

2 回答 2

5

尝试使用

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

反而。

是关于 CDate(long) 的一小部分文档。它不是来自 MS,也不是关于 VB6,但由于 CDate 是我迄今为止看到的所有 VBA 实现的一部分,我怀疑它不会有很大的不同。

于 2009-12-18T18:40:32.353 回答
0

旧的 VB6 long 数据类型变成System.Int32, 或者在 C# 中只是 int

C# 中的 long 是System.Int64

double is System.double,这是一个 64 位浮点变量类型

于 2009-12-19T09:39:57.937 回答