C++QT13位时间戳转换成年月日时分秒毫秒
前一阵子做了一个qt的项目,然后数据库中显示的是13位的bigInt型的数据,但在QTableWidget中需要显示带毫秒级的时间格式,所以多方查询,以防下次用到,就记录下。
1.QString 和QDateTime的时间转换
(1).QDateTime转换成QString
QDateTime dataTime;
QString startTime;
startTime=dataTime.toString("yyyy-MM-dd hh:mm:ss");
(2).QString 转换成QDateTime
QDateTime dataTime;
QString startTime;
dataTime= QDateTime::fromString(startTime, "yyyy-MM-dd hh:mm:ss");
2.年月日时分秒毫秒和13位时间戳的转换
(1)年月日时分秒转换成13位时间戳
数据库中的时间是13位bigInt型数据:1552535825000,转换成时间模式,界面显示:2019-03-14 11:57:05。
QDateTime startTime_d=QDateTime::fromString(startTime,"yyyy-MM-dd ");
unsigned long startTime_l=startTime_d.toTime_t();
startTime_l=startTime_l*1000+startTime_d.time().msec();
QString startTime_i=QString::number(startTime_l,10);
(2)13位时间戳转换成年月日时分秒毫秒
界面显示:2019-03-14 11:57:05,存到数据库中的时间是13位bigInt型数据:1552535825000。
QString time_sec;
QString actingTime;
if((actingTime.toLongLong()%1000)<10)
{
time_sec=QString("%1%2").arg("00").arg(actingTime.toLongLong()%1000);
}
else if((actingTime.toLongLong()%1000)>=10 && (actingTime.toLongLong()%1000)<100)
{
time_sec=QString("%1%2").arg("0").arg(actingTime.toLongLong()%1000);
}else if((actingTime.toLongLong()%1000)>=100 &&(actingTime.toLongLong()%1000)<1000)
{
time_sec=QString("%1").arg(actingTime.toLongLong()%1000);
}
QString time_str = QString("%1:%2")
.arg(QDateTime::fromTime_t((actingTime.toLongLong())/1000).toString("yyyy-MM-dd hh:mm:ss"))
.arg(time_sec);