写点什么

时间戳与时区

作者:ScratchLab
  • 2023-06-23
    河北
  • 本文字数:695 字

    阅读完需:约 2 分钟

时间戳与时区

 时区

UTC 协调世界时,又称世界统一时间、世界标准时间、国际协调时间。此外还有其他一些时区,例如:北京时间、美国时间。

 时间戳

Unix 时间戳是从 1970-1-1 00:00:00 UTC (北京时间 1970-01-01 08:00:00)开始所经过的秒数,不考虑闰秒,又名 Unix epoch、Unix time、POSIX time。

时区与时间戳的关系

在某一个具体的时刻,时间戳只有一个,例如,笔者刚读取了一次时间戳,该值为 1567819100。在该时刻,用户在中国、朝鲜、巴基斯坦、美国读取的值都是一样的,因为时间戳是相对于 UTC 时间的。

对于时区则有所不同,该时刻可以表示为很多时间,如下图所示:


C API

C 语言提供了时间戳类型和时间类型,并提供了函数用于二者之间的转换,如下所示:

typedef long time_t;struct tm {    int tm_sec;    int tm_min;    int tm_hour;    int tm_mday;    int tm_mon;    int tm_year;    int tm_wday;    int tm_yday;    int tm_isdst;};
struct tm *gmtime(time_t const *time_value); // 时间戳转 UTC 时间char *setlocale(int category, char const *locale); // 设置Localstruct tm *localtime(time_t const *time_value); // 时间戳转本地时间
复制代码



我写了一个小项目桃花源(英文名为 peach),该项目是一个迷你虚拟机,用于学习 Intel 硬件虚拟化技术。学习该项目可使读者对 CPU 虚拟化、内存虚拟化技术有个感性、直观的认识,为学习 KVM 打下坚实的基础。peach 实现了如下功能:

  • 使用 Intel VT-x 技术实现 CPU 虚拟化

  • 使用 EPT 技术实现内存虚拟化

  • 支持虚拟 x86 实模式运行环境

  • 支持虚拟 CPUID 指令

  • 支持虚拟 HLT 指令,Guest 利用 HLT 指令关机

代码仓库如下:

https://github.com/pandengyang/peach.git
复制代码


用户头像

ScratchLab

关注

苔花如米小,也学牡丹开。 2019-03-04 加入

专注创作有助于理解CPU体系结构、虚拟化的文章。

评论

发布
暂无评论
时间戳与时区_ScratchLab_InfoQ写作社区