Remote ID UTC Timestamp 计算与可视化

November 20, 2025

Remote ID UTC Timestamp 计算与可视化

原生 JavaScript UTC Timestamp 计算逻辑,并在浏览器端实时展示 ticks 与 MM:SS 读数。

在远程 ID 的仿真工具里,我们通常只关心“当前小时内已经过去多少秒”。

UTC Timestamp Demo

基于 UTC 的当前小时偏移:

  • Ticks (1/10 s): --
  • Readable MM:SS: --:--
  • ISO 8601 UTC: --

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 秒