2016-06-19 14 views
-2
COleDateTime m_dt; 
m_ctrlDateTime.GetTime(m_dt); 
double d = dt.m_dt; 
System::DateTime datum; 
datum.FromOADate(d); 

DateTimePickerコントロールから日時を取得し、後でその値にその値を設定しようとしています。 DatumはSystem :: DateTime(C#)です。しかし、データムはこれです "1/1/1 00:00:00"何が問題なのですか?System :: DateTimeは1/1/1の値を返します00:00:00

datum.FromOADate(d); 

DateTime::FromOADateは、実際の静的メンバ関数である戻りDateTimeオブジェクトその:

+0

のような何かが必要= m_ctrlDateTime.GetTime(m_dt); – jdweng

+0

@jdwengどうしたらうまくいくのですか? 'GetTime'メンバ関数は' DateTime'値を返しません。実際には 'BOOL'を返します。つまり、' long'をとる 'DateTime'コンストラクタを呼び出すために暗黙の変換を実行してコンパイルすることもあります。 –

+0

なぜこのラインが必要ですか? – jdweng

答えて

1

問題は、非常に最後の行です。 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); 

また、次んでした(しかし、それは同様に混乱するでしょう):今のDateTime:

COleDateTime m_dt; 
m_ctrlDateTime.GetTime(m_dt); 
double d = dt.m_dt; 
System::DateTime datum; 
datum = datum.FromOADate(d); 
関連する問題