我想创建一个日期,但我的时间戳是在char *。
所以我试图转换为int,但是使用atoi()或者toInt()我不会得到它。
qDebug() << atoi("1478790756754"); /* give 2147483647 */
QString tmp = "1478790756754";
qDebug() << tmp.toInt(); /* give 0 */
目的是获取日期,例如dateTime.setTime_t()。
答案 0 :(得分:2)
您的时间戳似乎是自1.1.1970 格式以来的毫秒。这显然不适合32位整数,就像您的架构上的int
类型一样。
解决方案很简单:转换为值范围较大的类型,即long long
:
QString tmp = "1478790756754";
QDateTime date = QDateTime::fromMSecsSinceEpoch(tmp.toLongLong());
QString
的转换函数还有一个指向bool
的out参数指针。您可以传递bool变量并对其进行测试以检查转换是否成功。
答案 1 :(得分:1)
您应该使用atoll
代替。请注意<climits>
中的限制。