将CDate(长)从VB6移植到C#

Sco*_*ain 4 c# vb6 vb6-migration

我的任务是将旧的VB6程序转换为C#.我无法移植的一个功能是从二进制文件中读取的字段计算出生日期:

.BirthDate = CDate((CLng(recPatient.birthDateByte2) * 256) +
                         (recPatient.birthDateByte1 + 366))
Run Code Online (Sandbox Code Playgroud)

我能找到的唯一一个远程类似的功能是:

DateTime BirthDate = DateTime.ToDateTime((long)recPatient.birthDateByte2) * 256) 
                                       + (recPatient.birthDateByte1 + 366));
Run Code Online (Sandbox Code Playgroud)

然而,ToDateTime(long)只是返回一个InvalidCastException.

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

我究竟做错了什么?

Doc*_*own 5

尝试使用

  DateTime.FromOADate((double)recPatient.birthDateByte2 * 256 
                     + recPatient.birthDateByte1 + 366)
Run Code Online (Sandbox Code Playgroud)

代替.

是关于CDate(长篇)的一小段文档.它不是来自MS,也不是关于VB6,但由于CDate是迄今为止我见过的所有VBA实现的一部分,我怀疑它不会产生很大的不同.