C++ 将System::Datetime转换为QDateTime

C++ 将System::Datetime转换为QDateTime,c++,.net,qt,qdatetime,C++,.net,Qt,Qdatetime,如何转换为?也许这是一种简单的方法,但很容易理解: a) 使用Datetime.ToString()将System::Datetime转换为字符串 b) 使用QDateTime::fromString()将字符串转换为QDateTime 或考虑使用 qDATEIME:::从FixTimeTo()/(参见例子)这也许是一个简单的方法,但它可以很容易地被低估: a) 使用Datetime.ToString()将System::Datetime转换为字符串 b) 使用QDateTime::fromSt

如何转换为?

也许这是一种简单的方法,但很容易理解:

a) 使用
Datetime.ToString()将System::Datetime转换为字符串

b) 使用
QDateTime::fromString()将字符串转换为QDateTime


<>或考虑使用<代码> qDATEIME:::从FixTimeTo()/<代码>(参见例子)

这也许是一个简单的方法,但它可以很容易地被低估:

a) 使用
Datetime.ToString()将System::Datetime转换为字符串

b) 使用
QDateTime::fromString()将字符串转换为QDateTime

<>或考虑使用<代码> qDATEIME:::FinTimeTh()<代码>(参见示例)

使用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);
}
使用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);
}

您可以使用ISO 8601标准作为中间格式:

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

请参阅和文档

您可以使用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(QString::fromStdWString(msclr::interop::marshal__as(systemDateTime.ToString(“ddmmyyyyy HH:mm:ss”),“ddmmyyyyy HH:mm:ss”))
QDateTime::fromString(QString::fromStdWString(msclr::interop::marshal_作为(systemDateTime.ToString(“ddmmyyyyy HH:mm:ss”),“ddMMyyyy HH:mm:ss”))

您可能需要查看另一个问题并从中查看。您可能需要查看另一个问题并从中查看可能的重复项。在Unix/Linux中,将Windows Filetime转换为秒的可能重复项:在Unix/Linux中,将Windows Filetime转换为秒: