我在Windows上用的是Qt5.6,MSVC2013 32位,在Ubuntu上用的是Qt5.4,64位。我正在尝试解析Journal syslog以将_SOURCE_REALTIME_TIMESTAMP转换为人类可读的文本。不知何故,毫秒数全为0。想知道显示毫秒甚至微秒的正确方式是什么?
bool ok;
QString ss = "1462962462893977";
const qlonglong s = ss.toLongLong(&ok );
if ( !ok ) {
qDebug() << "Error1";
}
const QDateTime dt = QDateTime::fromTime_t( s/1000000 );
const QString textdate = dt.toString( "yyyy-MM-dd hh:mm:ss.zzz" );
qDebug() <<"==>" << textdate;PC/UBuntu的结果是==> "2016-05-11 03:27:42.000“毫秒都是0,我希望它们都是数字。
谢谢!
发布于 2017-01-09 20:20:07
毫秒为零的原因是因为您使用fromTime_t()构建了QDateTime,这需要几秒钟的时间,因此您失去了亚秒级的精度。你需要做一些类似的事情:
const QDateTime dt = QDateTime::fromTime_t( s/1000000 ).addMSecs( (s/1000) % 1000 );或者使用QDateTime::fromMSecsSinceEpoch(),它获取自纪元以来的秒数,例如(假设您的时间戳是自纪元以来的微秒数,它看起来是微秒):
const QDateTime dt = QDateTime::fromMSecsSinceEpoch( s/1000 );我不认为您可以使用QDateTime处理微秒,文档中没有提到它们。
https://stackoverflow.com/questions/37424769
复制相似问题