我在Windows上使用Qt5.6,MSVC2013 32位,在Ubuntu上使用64位Qt5.4。我正在尝试解析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的结果是==&gt; &#34; 2016-05-11 03:27:42.000&#34; 毫秒都是0,我希望有数字。
谢谢!
答案 0 :(得分: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处理微秒,文档没有在任何地方提到它们。