12 Unix时间戳

时间戳概念

  • Unix 时间戳(Unix Timestamp)定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数,不考虑闰秒
  • 时间戳存储在一个秒计数器中,秒计数器为32位/64位的整型变量,永不进位。
  • 世界上所有时区的秒计数器相同,不同时区通过添加偏移来得到当地时间

      //2038年危机

FLASH程序存储器可以实现上电不丢失,而BKP(备份寄存器)的数据是需要VBAT引脚接上备用电池来维持。只要VBAT有电池供电,即使STM32主电源断电,BKP的值也可以维持原状。 

UTC/GMT 

  • GMT(Greenwich Mean Time)格林尼治标准时间是一种以地球自转为基础的时间计量系统。它将地球自转一周的时间间隔等分为24小时,以此确定计时标准
  • UTC(Universal Time Coordinated)协调世界时是一种以原子钟为基础的时间计量系统。它规定铯133原子基态的两个超精细能级间在零磁场下跃迁辐射9,192,631,770周所持续的时间为1秒。当原子钟计时一天的时间与地球自转一周的时间相差超过0.9秒时,UTC会执行闰秒来保证其计时与地球自转的协调一致 

时间戳转换

C语言的time.h模块提供了时间获取和时间戳转换的相关函数,可以方便地进行秒计数器、日期时间和字符串之间的转换

 

将秒计数器转换成当地时间(自动添加地区偏移)

#include <stdio.h>
#include <time.h>

time_t time_cnt;
struct tm time_date;
char*time_str;



int main(){
   time_cnt=time(NULL);
  printf("hello world!\n");
  printf("%d\n",time_cnt);
 time_date= *localtime(&time_cnt);
 printf("%d\n",time_date.tm_year+1900);
 printf("%d\n",time_date.tm_mon+1);
 printf("%d\n",time_date.tm_mday);
 printf("%d\n",time_date.tm_hour);
 printf("%d\n",time_date.tm_min);
 printf("%d\n",time_date.tm_sec);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值