Qt / C ++ - 将字符串时间戳转换为uint

时间:2016-11-10 15:18:38

标签: c++ qt

我想创建一个日期,但我的时间戳是在char *。

所以我试图转换为int,但是使用atoi()或者toInt()我不会得到它。

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

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

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

2 个答案:

答案 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>中的限制。