xuqiang 4 miesięcy temu
rodzic
commit
1b6547d1b6
2 zmienionych plików z 21 dodań i 0 usunięć
  1. 1 0
      include/utils.h
  2. 20 0
      src/utils.cpp

+ 1 - 0
include/utils.h

@@ -11,6 +11,7 @@ public:
     explicit Utils(QObject *parent = nullptr);
     
     static QString timestamp();
+    static qint64 currentNanoTimestamp();
 
 };
 

+ 20 - 0
src/utils.cpp

@@ -1,5 +1,6 @@
 #include "utils.h"
 #include <QDateTime>
+#include <QElapsedTimer>
 
 Utils::Utils(QObject *parent)
     : QObject{parent}
@@ -10,4 +11,23 @@ Utils::Utils(QObject *parent)
 QString Utils::timestamp()
 {
     return QString("%1").arg(QDateTime::currentMSecsSinceEpoch());
+}
+
+qint64 Utils::currentNanoTimestamp()
+{
+    static QElapsedTimer timer;
+    static qint64 baseNano = 0;
+    static bool initialized = false;
+
+    if (!initialized) {
+        // 当前毫秒时间戳 → 转成纳秒
+        baseNano = QDateTime::currentMSecsSinceEpoch() * 1000000LL;
+
+        // 启动高精度计时器
+        timer.start();
+        initialized = true;
+    }
+
+    // 当前 epoch 纳秒时间戳 = 基准时间 + 已经过的纳秒
+    return baseNano + timer.nsecsElapsed();
 }