November 20, 2025
Remote ID UTC Timestamp 计算与可视化
原生 JavaScript UTC Timestamp 计算逻辑,并在浏览器端实时展示 ticks 与 MM:SS 读数。
在远程 ID 的仿真工具里,我们通常只关心“当前小时内已经过去多少秒”。
C/C++ 版本参考实现
#include <iostream>
#include <chrono>
#include <ctime>
#include <iomanip>
int main() {
using namespace std::chrono;
// 获取当前 UTC 时间(带微秒/纳秒)
auto now = system_clock::now();
// 转换为 time_t(秒级)
std::time_t now_t = system_clock::to_time_t(now);
// 转成 UTC 时区的 tm
std::tm utc_tm = *std::gmtime(&now_t);
// 计算小时开始时间(UTC 当前小时 00:00)
std::tm hour_start_tm = utc_tm;
hour_start_tm.tm_min = 0;
hour_start_tm.tm_sec = 0;
std::time_t hour_start_t = timegm(&hour_start_tm);
// 计算差值(秒)
double seconds_since_hour = difftime(now_t, hour_start_t);
// 加上小数秒(提高精度)
auto now_us = time_point_cast<microseconds>(now);
auto now_sec = time_point_cast<seconds>(now);
double fractional = duration<double>(now_us - now_sec).count();
seconds_since_hour += fractional;
// 转换成 ticks(1/10 秒)
int ticks = static_cast<int>(seconds_since_hour * 10.0);
// 可读格式 MM:SS
int minutes = static_cast<int>(seconds_since_hour) / 60;
int seconds = static_cast<int>(seconds_since_hour) % 60;
// 输出
std::cout << "UTC Time: " << std::put_time(&utc_tm, "%H:%M:%S") << "\n";
std::cout << "Ticks (1/10 sec): " << ticks << "\n";
std::cout << "Readable (MM:SS): "
<< std::setw(2) << std::setfill('0') << minutes << ":"
<< std::setw(2) << std::setfill('0') << seconds << "\n";
return 0;
}ESP32, STM C/C++ 版本参考实现
uint32_t gps_seconds = ...; // 例如 GPS 时间(秒)
uint32_t seconds_in_hour = gps_seconds % 3600;
uint32_t ticks = seconds_in_hour * 10;uint32_t gps_ms = ...; // 毫秒
uint32_t seconds_in_hour = (gps_ms / 1000) % 3600;
uint32_t ticks = gps_ms / 100; // 转成 0.1 秒