Конвертировать System::Datetime в QDateTime

Как я могу конвертировать System::Datetime в QDateTime?

4 ответа

Решение
QDateTime::fromString(QString::fromStdWString(msclr::interop::marshal_as<std::wstring>(systemDateTime.ToString("ddMMyyyy HH:mm:ss"))), "ddMMyyyy HH:mm:ss"))

Возможно, это простой метод, но его легко понять:

а) преобразовать System::Datetime в строку с DateTime.ToString()

б) конвертировать строку в QDateTime с QDateTime::fromString()

Или рассмотрите использование QDateTime::fromTime_t() (см. пример преобразования Datetime в time_t)

Вы можете использовать стандарт ISO 8601 в качестве промежуточного формата:

/* not tested */
System::DateTime date;
QString str(date.ToString("O")); // "O" for ISO format
QDateTime qdt = QDateTime::fromString(str, Qt::ISODate);

Увидеть QDateTime::fromString а также DateTime::ToString документы

Используя Win32 API

#define WINDOWS_TICKS_PER_SEC 10000000
#define EPOCH_DIFFERENCE 11644473600LL

QDatetime getQDatetime(){
    FILETIME ft = {0}; 
    ::GetSystemTimeAsFileTime(&ft);  //Retrieves the current system date and time.
    LARGE_INTEGER li = {0};
    li.LowPart = ft.dwLowDateTime;
    li.HighPart = ft.dwHighDateTime;
    long long int hns = li.QuadPart;
    wprintf(L"Windows API time: %lli\n", hns);
    long long int utm ;
    utm=(hns / WINDOWS_TICKS_PER_SEC - EPOCH_DIFFERENCE);
    wprintf(L"Unix time: %lli\n", utm);
    return QDateTime::fromTime_t(utm);
}

Смотрите это для получения дополнительной помощи

Другие вопросы по тегам