C++时间与日期及相关操作
1. 概念
(1) Coordinated Universal Time(UTC)
协调世界时,又称世界标准时间,即格林威治标准时间(Greenwich Mean Time,GMT)。UTC 通用标准时,以z来标识,时间格式如下:
2022-04-07T07:04:43.995Z
北京时间为UTC+8,UTC时间转化为:
2022-4-7 15:04:43
(2)Calendar Time
日历时间,是用"从一个标准时间点到此时的时间经过的秒数"来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是"相对时间",但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。一般表示距离UTC时间 1970-01-01 00:00:00的秒数。
(3) epoch
时间点。在标准c/c++中是一个整数,用此时的时间和标准时间点相差的秒数(即日历时间)来表示。
2. 数据类型
(1)time_t
这是一个适合存储日历时间类型,实质是long int型。
(2)struct tm
tm包括日历日期和时间的各个组成。
struct tm {int tm_sec; // 秒 0-59(一般)int tm_min; // 分 0-59int tm_hour; // 小时0-23int tm_mday; // day 1-31int tm_mon; // 月0-11int tm_year; // 距 1900 的年数 如2022-1900 = 122int tm_wday; // 星期 0-6int tm_yday; // 距1月1号天数,0-365int tm_isdst; // 夏令时
}
(3)struct timeval
struct timeval{long int tv_sec; // 秒数long int tv_usec; // 微秒数
}
3. 操作函数
(1)time函数获得日历时间
函数原型: time_t time(time_t *timer)
参数说明: timer=NULL时得到当前日历时间(从1900-01-01 00:00:00到现在的秒数(本地时区)),timer=时间数值时,用于设置日历时间,time_t是一个unsigned long类型。如果 timer不为空,则返回值也存储在变量 timer中。
函数功能: 得到当前日历时间或者设置日历时间
函数返回: 当前日历时间
(2)localtime函数获得日期时间
函数原型: struct tm *localtime(const time_t *timer)
函数功能: 使用 timer 的值来填充 tm 结构。timer 的值被分解为 tm 结构,并用本地时区表示。
函数返回: 以tm结构表达的时间
(3)asctime函数
函数原型: char* asctime(struct tm * ptr)
函数功能:将结构struct tm * ptr所表示的时间以字符串表示
函数返回: 返回的时间字符串格式为:星期,月,日,小时:分:秒,年
参数说明: 结构指针ptr应通过函数localtime()或gmtime()得到
#include <stdio.h>
#include <time.h>
using namespace std;int main ()
{time_t timer;struct tm *ltm;time( &timer );ltm= localtime( &timer );//printf("当前的本地时间和日期:%s", asctime(ltm));// 输出 tm 结构的各个组成部分cout << "当前的本地时间和日期:" << endl;cout << "年: "<< 1900 + ltm->tm_year << endl;cout << "月: "<< 1 + ltm->tm_mon<< endl;cout << "日: "<< ltm->tm_mday << endl;cout << "时间: "<< ltm->tm_hour << ":";cout << ltm->tm_min << ":";cout << ltm->tm_sec << endl;return(0);
}
(3)mktime函数
函数原型:time_t mktime(struct tm *timeptr)
函数功能:把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值
函数返回:该函数返回一个 time_t 值,该值对应于以参数传递的日历时间。如果发生错误,则返回 -1 值。
#include <stdio.h>
#include <time.h>int main ()
{int ret;struct tm info;char buffer[80];info.tm_year = 2001 - 1900;info.tm_mon = 7 - 1;info.tm_mday = 4;info.tm_hour = 0;info.tm_min = 0;info.tm_sec = 1;info.tm_isdst = -1;ret = mktime(&info);if( ret == -1 ){printf("错误:不能使用 mktime 转换时间。\n");}else{strftime(buffer, sizeof(buffer), "%c", &info );print(buffer);}return(0);
}
(4)gettimeday函数
函数原型:int gettimeofday(struct timeval*tv, struct timezone *tz)
函数功能:获得当前时间,精确到微秒(1e-6 s)量级
函数返回:该函数执行成功后返回0,失败后返回-1,错误代码存于errno中
函数参数:参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果:
struct timezone{int tz_minuteswest; // 格林威治时间往西方的时差int tz_dsttime; // DST 时间的修正方式
}
timezone 参数若不使用则传入NULL即可。
在一段代码前后分别使用gettimeofday可以计算代码执行时间:
#include <stdio.h>
#include <sys/time.h>int main()
{struct timeval tv_begin, tv_end;gettimeofday(&tv_begin, NULL);fun();gettimeofday(&tv_end, NULL);//转化成小数点表示double t_s = (double)(tv_begin.tv_sec*1000000+tv_begin.tv_usec)/1000000.0f;double t_e = (double)(tv_end.tv_sec*1000000+tv_end.tv_usec)/1000000.0f;printf("elapsedTime: %.6f s\n",(t_e - t_s));
}
C++时间与日期及相关操作相关推荐
- 怎么修改php.in的时间,PHP时间和日期函数怎么操作
PHP时间和日期函数怎么操作 php函数的多样化和功能相近真是一大特点,同一个应用可以用多种函数实现,这恐怕也是开源的一个弊端了:通过对PHP时间函数的系统学习,充分理解了时间戳和时区的概念(这个真的 ...
- C#中一些日期的相关操作
//如本年度销售额.本季度利润.本月新增客户 //C#里内置的DateTime基本上都可以实现这些功能,巧用DateTime会使你处理这 ...
- java新的日期_java8你应该了解的新特性(新时间与日期API)
java8你应该了解的新特性(新时间与日期API) java8,你应该了解的新特性(新时间与日期API) 1.使用 LocalDate .LocalTime .LocalDateTime LocalD ...
- Java 时间与日期处理
Java 时间与日期处理 王下邀月熊 18 小时前 Java 时间与日期处理 从属于笔者的 现代 Java 开发系列文章,涉及到的引用资料声明在 Java 学习与实践资料索引中. Java 时间与日期 ...
- Java 时间与日期处理 1
Java 时间与日期处理 从属于笔者的现代 Java 开发系列文章,涉及到的引用资料声明在 Java 学习与实践资料索引中. Java 时间与日期处理 在 Java 8 之前,我们最常见的时间与日期处 ...
- Java时间日期类处理(LocalDateTime、LocalDate相关操作、获取周几、工作日休息日节假日判定)
1.LocalDateTime相关操作:(时间推移.计算两个LocalDateTime之间的时间间隔.转LocalDate),代码如下: // 获取LocalDateTime对象String date ...
- android 日期时间类,Android 时间与日期操作类
获取本地日期与时间 public String getCalendar() { @SuppressLint("SimpleDateFormat") SimpleDateFormat ...
- java当中日期类的相关操作(学习笔记)
一:引言 Calendar类是日历类,提供操作日历字段的方法,其中有常用操作 get 和 set 方法还有 add方法 详细用法请看码 二:上码 package cn.wyj.one;import j ...
- Python3 日期时间 相关模块(time(时间) / datatime(日期时间) / calendar(日历))
Python3 日期时间 相关模块(time(时间) / datatime(日期时间) / calendar(日历)) 本文由 Luzhuo 编写,转发请保留该信息. 原文: http://blog. ...
最新文章
- VINS-Mono:一种鲁棒且通用的单目视觉惯性系统
- python使用openCV图像加载(转化为灰度图像)、Canny边缘检测器检测图像的边缘(Detect Edges)
- 程序员都痛恨开会?多开 1 个会,我少写 1000 行代码......
- 神策专访丨摩天轮票务陈校校:在线票务平台精准营销之道
- fegin需要实现类_【第24条】静态成员类优于非静态成员类
- 自动驾驶轻松开发?华为云ModelArts赋能智慧出行
- Java 用DBCP连接数据库。
- Linux 实用命令
- Linux 中软件使用及常见问题 QA
- 十大抢手的网站压力测试工具
- OSChina 周四乱弹 —— 懦夫!你就不能找富婆吗
- 合唱队形java_合唱队形
- C++之单例(singleton)模式
- 使用Dreamweaver进行一个简单的图文混排1/HTML
- 用LSTM生成武侠人名
- 怎么用单片机做一个比较有创新的东西?
- 单片机C语言学习(菜鸟入门)
- Linux基础——makefile编写
- Description 一个笼子里关了若干鸡和兔子,鸡有2只脚,兔子有4只脚,没有例外。已知笼子里脚的 总数a,问笼子里至少有多少只动物,至多有多少只动物? Input 第一行是测试数据的组数n,后面
- Android 实现系统打印机打印图片,文本,以及二维码生成与解析