c# - 将 CDate(long) 从 VB6 移植到 C#

标签 c# vb6 vb6-migration

我的任务是将旧的 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/

相关文章:

c# - 如何找出我的控制台应用程序在哪个目录中运行?

c++ - 在 VB6 中使用 C++ DLL

.net - 将 VB6 容器类升级到 VB.NET

java - 将 xbasej 与 NTX 索引结合使用

c# - 在 ASP.Net 中定义自己的 TlsCipherSuite

c# - 比较同一类的 2 个对象

c# - 为什么我必须执行转换为值元组内的对象?

vb6 - 在代码中获取错误 'User defined type not defined'

winforms - 将 VB6 项目转换为 .net- 引用错误?

vb.net - VB6调用VB.NET调用第三方COM dll错误