时间戳与时区
时区
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 语言提供了时间戳类型和时间类型,并提供了函数用于二者之间的转换,如下所示:
复制代码
我写了一个小项目桃花源(英文名为 peach),该项目是一个迷你虚拟机,用于学习 Intel 硬件虚拟化技术。学习该项目可使读者对 CPU 虚拟化、内存虚拟化技术有个感性、直观的认识,为学习 KVM 打下坚实的基础。peach 实现了如下功能:
使用 Intel VT-x 技术实现 CPU 虚拟化
使用 EPT 技术实现内存虚拟化
支持虚拟 x86 实模式运行环境
支持虚拟 CPUID 指令
支持虚拟 HLT 指令,Guest 利用 HLT 指令关机
代码仓库如下:
复制代码
评论