【问题标题】:Porting CDate(long) from VB6 to C#将 CDate(long) 从 VB6 移植到 C#
【发布时间】:2009-12-18 18:04:02
【问题描述】:

我的任务是将旧的 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) 的任何地方都找不到任何文档。

我做错了什么?

【问题讨论】:

    标签: c# vb6 vb6-migration


    【解决方案1】:

    尝试使用

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

    改为。

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

    【讨论】:

      【解决方案2】:

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

      C# 中的 long 是 System.Int64

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-30
        • 1970-01-01
        • 2013-12-24
        • 2013-05-01
        • 2019-07-18
        相关资源
        最近更新 更多