【发布时间】:2009-09-03 13:45:56
【问题描述】:
我有一个二进制文件,其中一个记录字段存储了一些日期信息。
保存程序由VC++编写,使用日期类型。
如何将其读入 C# 的 DateTime 类型?
顺便说一句:我试过 DateTime.FromBinary,但它看起来不对。
【问题讨论】:
我有一个二进制文件,其中一个记录字段存储了一些日期信息。
保存程序由VC++编写,使用日期类型。
如何将其读入 C# 的 DateTime 类型?
顺便说一句:我试过 DateTime.FromBinary,但它看起来不对。
【问题讨论】:
【讨论】:
正如 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 的美妙之处,你可以学习新事物。
【讨论】:
如果是 OLE DATE,请使用here 提供的信息:
DATE 类型是使用 8 字节浮点数。天是 由整数增量表示 从 1899 年 12 月 30 日开始, 午夜为零时间。时间值是 表示为小数部分。时间 精度为 1 秒。这种类型是 也用于表示仅日期( 小数部分为 0) 或仅时间 (整数部分为0)值。
使用它,您可以转换为 CLR 日期时间。
【讨论】: