2009-09-03 87 views
1

我得到了一个二进制文件,并且其中一个记录字段存储了一些日期信息。如何将VC++的DATE类型转换为C#的DateTime?

该保存节目由VC++编写并使用DATE类型。

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


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

回答

0

如果它是一个OLE日期,使用从here提供的信息:

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

利用这一点,你可以转换为CLR的DateTime。

2

正如维奈的回答指出,在VC++日期确实是一个双。只需读取一个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); 

EDIT 或者使用DateTime.FromOADate由Joe的建议。

如此美丽,你能学到新的东西。

+0

谢谢,伙计们。我喜欢这里。 – wupher 2009-09-03 17:02:20

相关问题