时间跳变问题
QDateTime的具体用法可以在Qt creator 鼠标双击选中,按 F1 查看它的文档, Qt 的文档还是不错的.
我们有时会用下面的代码来做等待, 在笔者使用过程中发现
//等待
QDateTime n = QDateTime::currentDateTime(); #获取当前时间
QDateTime now;
do{
now = QDateTime::currentDateTime();
QCoreApplication::processEvents();
} while (n.msecsTo(now)<=20000);//需要延时时间
没错, 就是获取的时间突然变小, 然后变成一个死循环…
可以改造成下面
for(int i=0; i<20; ++i){
QThread::sleep(1); //等着1s, 如果想要更平滑可以使用msleep(ms)
QCoreApplication::processEvents();
}
接收服务端时间问题
//比如我们从服务端接收并解析 create_on = 2021-03-22T13:20:04.745Z 时间
QDateTime dateTime;
dateTime = QDateTime::fromString(create_on,Qt::ISODate);
dateTime.setTimeSpec(Qt::UTC);//这里要注意使用Qt::UTC,它默认是 Qt::LocalTime
//当我们处在同一时区时看不出来,当处于不同时区后,就会解析错误。