【问题标题】:Convert System::Datetime to QDateTime将 System::Datetime 转换为 QDateTime
【发布时间】:2016-07-21 00:48:22
【问题描述】:

如何将System::Datetime 转换为QDateTime

【问题讨论】:

标签: c++ .net qt qdatetime


【解决方案1】:

也许这是一种直截了当的方法,但也很容易被低估:

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

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

或者考虑使用QDateTime::fromTime_t()(参见Datetime to time_t conversion的例子)

【讨论】:

    【解决方案2】:

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

    【讨论】:

    【解决方案3】:

    您可以使用 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 文档

    【讨论】:

      【解决方案4】:
      QDateTime::fromString(QString::fromStdWString(msclr::interop::marshal_as<std::wstring>(systemDateTime.ToString("ddMMyyyy HH:mm:ss"))), "ddMMyyyy HH:mm:ss"))
      

      【讨论】:

        猜你喜欢
        • 2012-01-18
        • 2022-06-22
        • 1970-01-01
        • 1970-01-01
        • 2014-11-16
        • 1970-01-01
        • 2014-02-11
        • 1970-01-01
        相关资源
        最近更新 更多