System :: DateTime返回值1/1/1 00:00:00

时间:2016-06-19 12:06:10

标签: c# c++ mfc coledatetime

COleDateTime m_dt;
m_ctrlDateTime.GetTime(m_dt);
double d = dt.m_dt;
System::DateTime datum; 
datum.FromOADate(d);

我试图从DateTimePicker控件获取日期和时间,然后将datum的值设置为该值。 Datum是System :: DateTime(C#)。但是数据是这个“1/1/1 00:00:00”有什么问题?

1 个答案:

答案 0 :(得分:1)

问题是最后一行:

datum.FromOADate(d);

DateTime::FromOADate实际上是一个静态成员函数,返回一个DateTime对象。在C ++术语中,您可以将其视为named constructor

初始化datum就像普通的成员函数一样。令你感到困惑的是C++ allows you to call static members using an instance of the object。在C#中,这是不可能的,你会得到一个编译时错误提醒你注意这个问题。

写这样的代码,你会没事的:

COleDateTime m_dt;
m_ctrlDateTime.GetTime(m_dt);
double d = dt.m_dt;
System::DateTime datum = System::DateTime::FromOADate(d);

您也可以执行以下操作(但同样令人困惑):

COleDateTime m_dt;
m_ctrlDateTime.GetTime(m_dt);
double d = dt.m_dt;
System::DateTime datum; 
datum = datum.FromOADate(d);