时间戳理解

时间戳是什么?

一个整数,距离一个 约定好的时间 已经过去的时间,这里时间的单位可以是 s ms us ns.
不同语言或者业务场景中, 会根据需要使用不同的精度;

  • lua 默认的os库就是以s
  • C# ms
    image

时间戳 = 从某个固定起点开始,经过了多少时间

想要统一的怎么办?

没有统一的, Unix系统调用. 先拿到底层的,然后自己再进行封装。

常规实现

距离 UTC 过去的时间就好了,
最常见的起点是:
👉 Unix epoch
也就是:

1970-01-01 00:00:00 (UTC)

不同时区的时间戳一样吗?

一样的, 可以直接比较。

不同时区,再进行一个 转换。

OS怎么拿到一个时间, 电脑怎么知道时间呢?

(1)RTC(Real-Time Clock)

实时时钟芯片

  • 主板上有一个独立芯片
  • 有电池(关机也能走)
  • 存储类似:
    2026-05-04 10:00:00
  • 类似一个“电子表”

(2)CPU/系统计时器(高频计数器)

比如:

  • TSC(Time Stamp Counter)
  • HPET
  • APIC Timer
    👉 本质:
    一个不断递增的计数器
    例如:
    0 → 1 → 2 → 3 → ...
    频率可能是:
    3GHz → 每秒 3,000,000,000 次

(3) 校准
Network Time Protocol NTP

总结

RTC(提供真实时间)
    ↓
OS 启动读取
    ↓
建立 base_time
    ↓
CPU 计数器持续递增
    ↓
OS 用“计数差值”推算当前时间
    ↓
NTP 定期校准
posted @ 2026-05-05 16:15  BATTAB  阅读(0)  评论(0)    收藏  举报