我的任务是将旧的 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)
上找不到任何文档。
我做错了什么?
最佳答案
尝试使用
DateTime.FromOADate((double)recPatient.birthDateByte2 * 256
+ recPatient.birthDateByte1 + 366)
相反。
Here是关于 CDate(long) 的一小部分文档。它不是来自 MS,也不是关于 VB6,但由于 CDate 是我迄今为止看到的所有 VBA 实现的一部分,我怀疑它不会产生很大的不同。
关于c# - 将 CDate(long) 从 VB6 移植到 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1929802/