首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt QDateTime微秒精度

Qt QDateTime微秒精度
EN

Stack Overflow用户
提问于 2016-05-25 06:14:59
回答 1查看 2.1K关注 0票数 1

我在Windows上用的是Qt5.6,MSVC2013 32位,在Ubuntu上用的是Qt5.4,64位。我正在尝试解析Journal syslog以将_SOURCE_REALTIME_TIMESTAMP转换为人类可读的文本。不知何故,毫秒数全为0。想知道显示毫秒甚至微秒的正确方式是什么?

代码语言:javascript
复制
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,我希望它们都是数字。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-01-09 20:20:07

毫秒为零的原因是因为您使用fromTime_t()构建了QDateTime,这需要几秒钟的时间,因此您失去了亚秒级的精度。你需要做一些类似的事情:

代码语言:javascript
复制
const QDateTime dt = QDateTime::fromTime_t( s/1000000 ).addMSecs( (s/1000) % 1000 );

或者使用QDateTime::fromMSecsSinceEpoch(),它获取自纪元以来的秒数,例如(假设您的时间戳是自纪元以来的微秒数,它看起来是微秒):

代码语言:javascript
复制
const QDateTime dt = QDateTime::fromMSecsSinceEpoch( s/1000 );

我不认为您可以使用QDateTime处理微秒,文档中没有提到它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37424769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档