如何将VC ++的DATE类型转换为C#的DateTime?

时间:2009-09-03 13:45:57

标签: c# c++ datetime date

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

保存程序由VC ++编写并使用DATE类型。

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


BTW:我尝试过DateTime.FromBinary,但看起来不对。

3 个答案:

答案 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。