2016-11-10 231 views
0

我想创建一个日期,但我的时间戳在char *中。Qt/C++ - 将字符串时间戳转换为uint

所以我想转换为int但与atoi()或toInt()我不明白。

qDebug() << atoi("1478790756754"); /* give 2147483647 */ 

QString tmp = "1478790756754"; 
qDebug() << tmp.toInt(); /* give 0 */ 

目标是获取日期,例如dateTime.setTime_t()。

回答

2

您的时间戳似乎在自1.1.1970格式以来的毫秒。这显然不适合32位整数,因为在架构上的类型为int

的解决方案是简单:转换为类型与更大的值范围,即long long

QString tmp = "1478790756754"; 
QDateTime date = QDateTime::fromMSecsSinceEpoch(tmp.toLongLong()); 

QString的转换函数也有一个输出参数指针bool。您可以传递一个bool变量并对其进行测试以检查转换是否成功。

相关问题