C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用
time.h 头文件定义了四个变量类型、两个宏
四个变量类型:
size_t | 是无符号整数类型,它是 sizeof 关键字的结果。 |
---|---|
clock_t | 这是一个适合存储处理器时间的类型,类型为unsigned long |
time_t | 这是一个适合存储日历时间类型。unsigned long类型 |
struct tm | 这是一个用来保存时间和日期的结构 |
tm 结构的定义如下:
struct tm
{
int tm_sec; / 秒,范围从 0 到 59 /
int tm_min; / 分,范围从 0 到 59 /
int tm_hour; / 小时,范围从 0 到 23 /
int tm_mday; / 一月中的第几天,范围从 1 到 31 /
int tm_mon; / 月,范围从 0 到 11(注意) /
int tm_year; / 自 1900 年起的年数 /
int tm_wday; / 一周中的第几天,范围从 0 到 6 /
int tm_yday; / 一年中的第几天,范围从 0 到 365 /
int tm_isdst; / 夏令时 /
};
两个宏:
NULL | 这个宏是一个空指针常量的值。 |
---|---|
CLOCKS_PER_SEC | 这个宏表示每秒的处理器时钟个数。用于将clock()函数的结果转化为以秒为单位的量,这个量的具体值是与操作系统相关的,通常为1000 |
#include <iostream>
#include<ctime>
using namespace std;
int main()
{
clock_t start, finish; //定义两个处理器时钟变量
double total = 0;
int i = 0;
start = clock(); //读取时间
//该函数返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。如果时间不可用,则返回 -1
//为了获取 CPU 所使用的秒数,您需要除以 CLOCKS_PER_SEC
//在 32 位系统中,CLOCKS_PER_SEC 等于 1000000,该函数大约每 72 分钟会返回相同的值
for (; i < 100000000; ++i)
{
//do someting;
}
finish = clock();
total = (double)(finish - start) / CLOCKS_PER_SEC;//将时间转换为秒
//printf("CPU 占用的总时间:%fn", total_t);
cout << total << endl;
return 0;
}
time_t seconds; //创建日历时间对象
seconds = time(NULL); //返回时间--格式一 //time(&seconds); //返回时间--格式二
//当参数为NULL时,得到当前日历时间(从1970-01-01 00:00:00到现在的秒数)
time_t timer;
timer = time(NULL);
char stime[30];
ctime_s(stime, sizeof stime, &timer); //将日历时间参数timer转换为字符串
//返回字符串格式:星期,月,日,小时:分:秒,年
cout << stime << endl;
system("pause"); //暂停
//需要#include<stdlib.h>
time_t timer;
time(&timer);
struct tm* Now = new tm(); //创建日期时间结构变量指针
localtime_s(Now, &timer); //使用timer的值来填充tm结构
cout << Now->tm_hour << endl;
cout << Now->tm_min << endl;
time_t timer;
time(&timer);
struct tm Now;
localtime_s(&Now, &timer);
char str[32];
asctime_s(str, &Now);//将结构tm*所表示的时间转换为字符串
//返回的时间字符串格式为:星期,月,日,小时:分:秒,年
cout << str << endl;
time_t first, second;
time(&first);
Sleep(2000);
time(&second);
double a = difftime(second, first); //返回两次time_t的时间差
//单位:秒
cout << a << endl;
time_t timer;
tm info;
time(&timer);
gmtime_s(&info ,&timer); //获取时间
//得到以结构tm表示的时间信息,并用格林威治标准时间表示
//格林威治标准时间(Greenwich Mean Time,GMT),中国内地的时间与UTC得时差为+8,也即UTC+8,美国为UTC-5
time_t timer,timer1;
tm info;
time(&timer);
gmtime_s(&info ,&timer);
timer1 = mktime(&info); //把tm*的时间格式转换为time_t格式的时间
#include <iostream>
#include<ctime>
using namespace std;
int main()
{
time_t timer;
tm info;
char buf[80];
time(&timer);
localtime_s(&info, &timer);
strftime(buf, 80, "%Y年%m月%e日_%H时%M分%S秒", &info);//按照指定的格式输出为字符串
//参数1:char* 用来保存字符串
//参数2:写到参数1中的最多字节数
//参数3:格式
//参数4:tm*
//以年月日_时分秒的形式表示当前时间
/*format如下:它们是区分大小写的。
%a 星期几的简写
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十进制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号
*/
cout << buf << endl;
return 0;
}
原文链接: https://www.cnblogs.com/liming19680104/p/13475173.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/201349
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!