C# 如何将VC++的日期类型转换为C的日期时间?

C# 如何将VC++的日期类型转换为C的日期时间?,c#,c++,datetime,date,C#,C++,Datetime,Date,我得到了一个二进制文件,其中一个记录字段存储了一些日期信息 保存程序是用VC++编写的,使用日期类型 如何将其读入C的DateTime类型 顺便说一句:我尝试了DateTime.FromBinary,但它看起来是错误的。如果它是OLE日期,请使用以下可用信息: 日期类型是使用 8字节浮点数。日子是 以整数增量表示 从1899年12月30日开始, 午夜是时间零点。时间值为 表示为小数部分。时间 精度为1秒。这种类型是 也仅用于表示日期 小数部分为0或仅为时间 整数部分是0个值 使用此选项,您可以转

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

保存程序是用VC++编写的,使用日期类型

如何将其读入C的DateTime类型


顺便说一句:我尝试了DateTime.FromBinary,但它看起来是错误的。

如果它是OLE日期,请使用以下可用信息:

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


使用此选项,您可以转换为CLR日期时间。

如果是OLE日期,请使用以下信息:

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


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

正如Vinay在回答中指出的,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);
编辑 或者按照Joe的建议使用DateTime.FromOADate


因此,你可以学习新的东西。

正如维奈在回答中所指出的,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);
编辑 或者按照Joe的建议使用DateTime.FromOADate

所以,你可以学习新事物。

尝试。

尝试