System::DateTime возвращает значение 1/1/1 00:00:00
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" в чем проблема?
1 ответ
Проблема в самой последней строке:
datum.FromOADate(d);
DateTime::FromOADate
на самом деле статическая функция-член, которая возвращает DateTime
объект. В терминах C++ вы можете думать об этом как о названном конструкторе.
Не инициализируется datum
как обычная функция-член. Вас смущает тот факт, что C++ позволяет вам вызывать статические члены, используя экземпляр объекта. В 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);