我想創建一個日期,但我的時間戳在char *中。Qt/C++ - 將字符串時間戳轉換爲uint
所以我想轉換爲int但與atoi()或toInt()我不明白。
qDebug() << atoi("1478790756754"); /* give 2147483647 */
QString tmp = "1478790756754";
qDebug() << tmp.toInt(); /* give 0 */
目標是獲取日期,例如dateTime.setTime_t()。
我想創建一個日期,但我的時間戳在char *中。Qt/C++ - 將字符串時間戳轉換爲uint
所以我想轉換爲int但與atoi()或toInt()我不明白。
qDebug() << atoi("1478790756754"); /* give 2147483647 */
QString tmp = "1478790756754";
qDebug() << tmp.toInt(); /* give 0 */
目標是獲取日期,例如dateTime.setTime_t()。
您的時間戳似乎在自1.1.1970格式以來的毫秒。這顯然不適合32位整數,因爲在架構上的類型爲int
。
的解決方案是簡單:轉換爲類型與更大的值範圍,即long long
:
QString tmp = "1478790756754";
QDateTime date = QDateTime::fromMSecsSinceEpoch(tmp.toLongLong());
QString
的轉換函數也有一個輸出參數指針bool
。您可以傳遞一個bool變量並對其進行測試以檢查轉換是否成功。
您應該改用atoll
。請注意在<climits>
的限制。