C++时间日期的处理ctime

编程入门 行业动态 更新时间:2024-10-27 18:24:40

C++时间<a href=https://www.elefans.com/category/jswz/34/1771397.html style=日期的处理ctime"/>

C++时间日期的处理ctime

头文件:

#include<ctime>

    首先说明一下这个头文件主要有两个变量类型,time_t 与struct tm。

    time_t 是一个算术类型,_int64也就是long long,代表的就是秒数(从1900年至今)。

    struct tm是一个结构体变量,一共有九个成员。

    第一个 tm_sec 一般来说范围是(0~59),但为了适应一些系统有闰秒这鬼东西,范围就扩大了.(考虑真细= =)

    最后面那个 tm_isdst是作为夏令时的flag,至于什么夏令时,我也不太懂是什么鬼,自行百度,这里不考虑他.

    注意 tm_mday是从1开始,如果输入0相当于前一天.

    需要注意 tm_mon 从相对一月开始计算,例如:要设置为11月,那就是 tm_mon = 11 - 1;

    需要特别注意的是 tm_year这个是从1900年作为起始时间的,例如:要设置时间为2016,那就是 tm_year = 2016 - 1900;

   下面讲一下主要函数:

   1)time    time_t time (time_t* timer); //获取当前时间,然后赋值给指针变量 timer  

//注意这里的时间是现在时间减去1900年1月1日0时0分0秒的时间
time_t timer;
time(&timer);
timer = time(NULL);

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

cout << ctime(&timer);//timer = time(NULL);

    字符串的格式为: Www Mmm dd hh:mm:ss yyyy

    星期      月     日  时   分  秒  年

 

3) asctime  char* asctime (const struct tm * timeptr);//将tm结构体转换成字符串

    返回值字符串格式跟上面ctime一样

4)  mktime

表示范围从1900年1月1日到3000年1月1日(自己测试结果)

time_t mktime (struct tm * timeptr);//将tm结构体转换成time_t

还会根据结构体的年月日 修改成员 tm_wday 和 tm_yday, (原来的这两个成员变量会被忽视)
 

struct tm t1 = { 0 };//初始化结构体  
t1.tm_year = 2016 - 1900;//年份设置为2016年  
t1.tm_mon = 10;//月份设置为11月  
t1.tm_mday = 21;//记得tm_mday要设置  否则0就是前一天  
mktime(&t1);//格式化结构体,返回时间 秒为单位  

执行完上面的语句断点查看t1结构体变量

根据tm_mday,tm_mon,tm_year,

mktime函数会修改tm_wday(1为星期一),tm_yday(325为这一年的第326天,325这个值是相对一月一日的)

5) localtime

struct tm * localtime (const time_t * timer);  //将time_t转换成结构体

6) strftime

size_t strftime (char* ptr, size_t maxsize, const char* format, const struct tm* timeptr );

//这个叼,可以根据各种格式输出自己想要的时间,太多,自己看

7) difftime

double difftime (time_t end, time_t beginning);//计算两个时间的时间差 end - beginning

那么介绍函数们后,来讲一下具体问题的用途吧

计算日期差

比方说,我想算一下现在(2016.11.21)到明年高考(2017.6.7)还有多少天
 

#include<iostream>  
#include <ctime>using namespace std;int main() {struct tm t1 = { 0 };struct tm t2 = { 0 };double seconds;t1.tm_year = 2016 - 1900; t1.tm_mon = 10; t1.tm_mday = 21;//现在时间2016,11,21t2.tm_year = 2017 - 1900; t2.tm_mon = 5; t2.tm_mday = 7;//高考时间2017,6,7seconds = difftime(mktime(&t2), mktime(&t1));//转换结构体为time_t,利用difftime,计算时间差cout << seconds / 86400 << endl;//最后输出时间,因为一天有86400秒(60*60*24)system("pause");return 0;
}

--------------------- 
作者:ChiLi_Lin 
来源:CSDN 
原文:/ 
版权声明:本文为博主原创文章,转载请附上博文链接!

更多推荐

C++时间日期的处理ctime

本文发布于:2023-06-20 12:20:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/801396.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:日期   时间   ctime

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!