我想创建一个日期,但我的时间戳在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>
的限制。