繁体   English   中英

将System :: Datetime转换为QDateTime

[英]Convert System::Datetime to QDateTime

如何将System :: Datetime转换为QDateTime

也许这是一种简单明了的方法,但它很容易被低估:

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

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

或者考虑使用QDateTime::fromTime_t() (参见Datetime示例到time_t转换

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

请参阅QDateTime::fromStringDateTime::ToString文档

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM