时间戳

C/C++获取时间戳函数原型time_t time(time_t * timer)
用途 :获取时间戳

  一般网上说的是:“返回一个值,即格林尼治时间1970年1月1日00:00:00到当前时刻的时长,
时长单位是秒”,但是这个说法是不对的。因为使用时间一般分为UTC和Locall两个时区来用,
比如中国程序员用东八区的上海时间和UTC时间,相同的日期字符串中国和UTC时间差8个小时,如果
都是从1970年1月1日00:00:00到当前时刻的时长那么中国获取的时长应该会比UTC多8*3600s的
时长。
  事实上time函数获取的并不是从1970年1月1日00:00:00开始的时长,而是1970年1月1日00:00:00加上
对应时区偏移到当前时刻的时长 例如在中国获取的是从1970年1月1日08:00:00到当前时刻的
时长,使用UTC时间获取的才是1970年1月1日00:00:00到当前时刻的时长,但是呢因为每个
时区都在计算时把1970年1月1日00:00:00加上了偏移量所以时间戳在每个时区的值都是一样的。
  当前时间 中国Local:2020-08-14 16:00:00 等于UTC时间2020-08-14 08:00:00,计算时间戳
的时候起点分别是中国Local:1970-01-01 08:00:00 UTC的起点是1970-01-01 00:00:00,所以时间
戳是一样的(即不同时区下的时间戳为同一个值)。
  看起来不同时区获取的时间戳一样好像区分开来没啥用,但是当要把日期转化为时间戳就要
考虑的这个问题了,比如这个时间:2020-08-14 16:00:00,如果你把他当作UTC时间来转化位时间戳
结果是:1597392000+28800,如果把他看成中国Local时间结果是1597392000,查了八个小时,
时间戳转时间其实也要区分的,只不过系统函数(localtime,gtime)都做了。

PS:格林尼治时间和UTC时间一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值