当前位置: 首页 > news >正文

[C语言]时间戳

时间戳的概念

时间戳就是定义一个时间点作为0秒, 之后每过一秒依此加一, 将当前的时间戳换算成年月日, 再加上起点, 获得的就是现在时刻的时间. 根据地球时区的偏移, 比如北京时间是东八区, 做一个偏移量的加减.

0起点: 1900年1月1日0时0分0秒.

0偏移地点: 英国伦敦

时间戳存储器: 现在常见的时间戳存储在32位或者64位整型变量中, 或许是有符号, 或许是无符号. 世界上所有的时间戳(秒计数器)都是一样的, 换算结束再根据时区做偏移运算.

时间划分标准: GMT, UTC. 

GMTGreenwich Mean Time)格林尼治标准时间是一种以地球自转为基础的时间计量系统。它将地球自转一周的时间间隔等分为24小时,以此确定计时标准.

UTCUniversal Time Coordinated)协调世界时是一种以原子钟为基础的时间计量系统。它规定铯133原子基态的两个超精细能级间在零磁场下跃迁辐射9,192,631,770周所持续的时间为1秒。当原子钟计时一天的时间与地球自转一周的时间相差超过0.9秒时,UTC会执行闰秒来保证其计时与地球自转的协调一致.

C标准库

参考链接: 

https://cplusplus.com/reference/ctime/ctime/ 

C标准库为我们获取时间, 时间戳转化年月日都提供了非常标准的API函数来让我们调用.

头文件: <time.h>

变量类型: 

time_t类型

typedef     __time64_t     time_t;

typedef     __int64           __time64_t;

#define     __int64           long long

struct tm类型

struct tm {

    int tm_sec;                //秒

    int tm_min;                //分

    int tm_hour;              //小时  

    int tm_mday;            //日

    int tm_mon;              //月, 需要手动加1

    int tm_year;                 //年, 需要手动加1900

    int tm_wday;               //星期 

    int tm_yday;                //这个月的第几天, 需要手动加1(不用)

    int tm_isdst;                //夏令时标志(不用)

  };

常用函数: 

time_t time (time_t* timer); //获取当前时间戳
time_t currentTime;
time(&currentTime);//获取当前时间戳

struct tm * localtime (const time_t * timer); //根据时间戳转换为本地时间

char* ctime (const time_t * timer); //将时间戳转换成字符串

获取当前时间代码 

    struct tm * localTime;        //时间结构体

    time_t currentTime;          //时间戳

    time(&currentTime);//获取当前时间戳

    localTime = localtime(&currentTime); //获取当前时间, 存到结构体中.

    printf("当前时间:%s\n", ctime(&currentTime));

    printf("%d.%d.%d %d:%d:%d\n", localTime->tm_year + 1900, localTime->tm_mon + 1,

                                  localTime->tm_mday, localTime->tm_hour,

                                  localTime->tm_min, localTime->tm_sec);

    printf("星期:%d, 本月第 %d 天, 夏令时标志 %d\n", localTime->tm_wday,

                                                    localTime->tm_yday + 1,

                                                    localTime->tm_isdst);

相关文章:

  • Unity3D Shader Graph 使用 DDXY 节点达到抗锯齿的原理详解
  • 【量化】蜘蛛网策略复现
  • uniapp原生插件 - android原生插件打包流程 ( 避坑指南一)
  • QML —— Tcp网络通信实例(qml前端,C++后端。附完整源码)
  • 【Spark精讲】SparkSQL的RBO与CBO
  • Java 已死、前端已凉?
  • 0基础学java-day24(MySQL)
  • 使用 Jackson 提取 JSON 数据值 - JsonUtils工具类
  • 14.2 并发与竞争实验
  • HarmonyOS应用开发者高级认证(88分答案)
  • 基于深度卷积神经网络的猴痘分类识别系统
  • vfb控件数组的实现原理(visual freebasic ide),64位VB6 vb7
  • electron + sqlite3 解决打包后无法写入数据库
  • 用RASP五步轻松保护云端无服务器架构
  • Redis的集群模式:主从 哨兵 分片集群
  • 解决Pycharm pip安装模块太慢问题,pycharm2022没有manage repositories配置镜像源
  • 【论文阅读】Self-Paced Curriculum Learning
  • HarmonyOS —— UIAbility 页面跳转总结
  • C++初阶------------------入门C++
  • Kubernetes 学习总结(41)—— 云原生容器网络详解
  • 九江银行落地首单畜牧业转型金融业务,助推传统农业绿色智能
  • 一女游客在稻城亚丁景区因高反去世,急救两个多小时未能恢复生命体征
  • “复旦源”一源六馆焕新启幕,设立文化发展基金首期1亿元
  • 去年上海全市博物馆接待观众约4087万人次,同比增31.9%
  • 美国贸易政策|特朗普模式:你想做交易吗?
  • 著名文博专家吴远明因交通事故离世,享年75岁