2016-04-01 8 views
1

Wie kann ich System::Datetime-QDateTime konvertieren?Convert System :: Datetime QDateTime

+0

Sie können einen Blick auf, [ Diese Frage] (http://stackoverflow.com/questions/4030511/convert-a-qtimetime-in- utc-to-local-system-time) und [diese Antwort] (http://stackoverflow.com/a/30930959/5653461) von einer anderen Frage. – IAmInPLS

+2

Mögliche Duplikat [QDateTime Conversion] (http://stackoverflow.com/questions/30930085/qdatetime-conversion) – kawashita86

Antwort

0
QDateTime::fromString(QString::fromStdWString(msclr::interop::marshal_as<std::wstring>(systemDateTime.ToString("ddMMyyyy HH:mm:ss"))), "ddMMyyyy HH:mm:ss")) 
0

Vielleicht ist das einfache Methode, aber es kann für understating einfach sein:

a) konvertieren System :: Datetime zu String mit DateTime.ToString()

b) konvertieren Zeichenfolge QDateTime mit QDateTime::fromString()

Or Verwendung von QDateTime::fromTime_t() betrachtet (siehe Beispiel Datetime to time_t conversion)

0

Verwendung 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); 
} 

See this for more help

+0

Konvertieren von Windows Filetime auf die zweite in Unix/Linux: http://stackoverflow.com/a/6161842/2731967 – Ankur

0

Sie können die ISO 8601 Norm als Zwischenformat:

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

Siehe QDateTime::fromString und DateTime::ToString docs