Unix 时间戳(也称为 POSIX 时间戳)是一个表示从 1970 年 1 月 1 日 UTC 时刻开始所经过的秒数的数值。这个时间戳是与时间区域无关的,也就是说它在全球任何地方都表示同一个时刻。
如果你要将 Unix 时间戳转换为某个特定时区的时间,你需要考虑该时区相对于 UTC 的偏移量。对于东八区(即 UTC+8),你确实需要在 Unix 时间戳的基础上加上 8 小时的秒数来得到当地的时间。
一般来说,对于不同的时区,处理方法如下:
UTC+X (东部时区):在 Unix 时间戳基础上加 X 小时。
UTC-X (西部时区):在 Unix 时间戳基础上减 X 小时。
例如:
如果你想得到 UTC+3(如莫斯科)的时间,你需要在 Unix 时间戳基础上加上 3 小时。
如果你想得到 UTC-5(如美国东部标准时间 EST)的时间,你需要在 Unix 时间戳基础上减去 5 小时。
1.时间日期转成时间戳
在 C 语言中,<time.h> 头文件提供了日期和时间处理的功能
注意:
Unix 时间戳是从 1970 年 1 月 1 日 00:00:00
UTC 开始计算的,而不是从 1900 年开始。
在 C 语言中,struct tm 结构体用于存储分解后的日期和时间信息。tm_year 成员表示从 1900 年开始的年数
,这是因为 struct tm 结构体的设计是为了与早期的日期和时间处理标准兼容,而不是直接与 Unix 时间戳相关联。
struct tm 结构体成员
struct tm 的成员包括但不限于:
tm_sec
:秒 (0-60)tm_min
:分钟 (0-59)tm_hour
:小时 (0-23)tm_mday
:一个月中的哪一天 (1-31)tm_mon
:月份 (0-11),0 表示一月tm_year
:从 1900 年开始的年数tm_wday
:一周中的哪一天 (0-6),0 表示周日tm_yday
:一年中的哪一天 (0-365)tm_isdst
:夏令时标志 (-1 表示未知,0 表示不适用,1 表示适用)
#include <stdlib.h>
#include <time.h>
int main()