【问题标题】:How can I convert VC++'s DATE Type To C#'s DateTime?如何将 VC++ 的 DATE 类型转换为 C# 的 DateTime?
【发布时间】:2009-09-03 13:45:56
【问题描述】:

我有一个二进制文件,其中一个记录字段存储了一些日期信息。

保存程序由VC++编写,使用日期类型。

如何将其读入 C# 的 DateTime 类型?


顺便说一句:我试过 DateTime.FromBinary,但它看起来不对。

【问题讨论】:

    标签: c# c++ datetime date


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      正如 Vinay 的回答中所述,VC++ DATE 确实是双精度数。只需读入双精度,然后根据描述进行转换。

      这里是一些转换的示例代码:

      double CDate = 8.50; //The DATE from C++
      DateTime newDate = new DateTime(1899, 12, 30);  //Start at 12/30/1899
      int days = (int)Math.Floor(CDate); //Get the days (integer part)
      double hours = (CDate-days) * 24; //Get the hours (fraction part)
      
      newDate = newDate.AddDays(days).AddHours(hours);
      

      编辑 或者按照 Joe 的建议使用 DateTime.FromOADate。

      SO 的美妙之处,你可以学习新事物。

      【讨论】:

        【解决方案3】:

        如果是 OLE DATE,请使用here 提供的信息:

        DATE 类型是使用 8 字节浮点数。天是 由整数增量表示 从 1899 年 12 月 30 日开始, 午夜为零时间。时间值是 表示为小数部分。时间 精度为 1 秒。这种类型是 也用于表示仅日期( 小数部分为 0) 或仅时间 (整数部分为0)值。

        使用它,您可以转换为 CLR 日期时间。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-14
          相关资源
          最近更新 更多