我有一个二进制文件,其中一个记录字段存储了一些日期信息。
保存程序由VC ++编写并使用DATE类型。
如何将其读入C#的DateTime类型?
BTW:我尝试过DateTime.FromBinary,但看起来不对。
答案 0 :(得分:4)
答案 1 :(得分:2)
如Vinay的回答所述,VC ++ DATE实际上是双倍的。只需读入一个double,然后根据描述进行转换。
以下是转换的一些示例代码:
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的美丽,你可以学习新的东西。
答案 2 :(得分:0)
如果是OLE日期,请使用here中提供的信息:
使用a实现DATE类型 8字节浮点数。天是 以整数增量表示 从1899年12月30日开始, 午夜时间为零。时间价值是 表示为小数部分。时间 精度是1秒。这种类型是 也用于表示仅限日期( 小数部分是0)或仅限时间 (整数部分为0)值。
使用此功能,您可以转换为CLR DateTime。