Qt QDateTime 微秒级精度



我使用的是Qt5.6,在Windows上MSVC2013 32位,在Ubuntu上使用Qt5.4,64位。我正在尝试解析期刊系统日志以将_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,我希望有数字。

谢谢!

毫秒

为零的原因是您使用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处理微秒,文档在任何地方都没有提到它们。

相关内容

  • 没有找到相关文章