头文件:

#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 
原文:https://blog.csdn.net/l773575310/article/details/53258230/ 
版权声明:本文为博主原创文章,转载请附上博文链接!

C++时间日期的处理ctime相关推荐

  1. linux时间与日期函数,Linux时间日期函数

    最近跑实验的时候需要获取函数的执行时间,因此变在网上搜集整理了,在Linux下跟时间有关的函数,保存在此,以备不时之需- asctime(将时间和日期以字符串格式表示) 相关函数 time,ctime ...

  2. Python 时间日期(datetime)

    简介: datetime 模块提供用于处理日期和时间的类.在支持日期时间数学运算的同时,实现的关注点更着重于如何能够更有效地解析其属性用于格式化输出和数据操作.本文主要介绍Python中的时间日期(d ...

  3. c语言 时间函数,C语言函数—时间日期函数

    时间日期函数 函数库为time.h.dos.h 在时间日期函数里,主要用到的结构有以下几个: 总时间日期贮存结构tm ┌──────────────────────┐ │struct tm │ │{ ...

  4. Boost库学习の时间日期处理

    记录一下Boost程序库的学习 系统:win11下WSL2,ubuntu子系统 安装Boost程序库 sudo apt-get install libboost-dev 安装好了以后就可以在/usr/ ...

  5. 基于MFC的时间日期实例应用讲解

    CSDN话题挑战赛第2期 日期和时间类简介 CTime类的对象表示的时间是基于格林威治标准时间(GMT)的.CTimeSpan类的对象表示的是时间间隔. CTime类和CTimeSpan类一般不会被继 ...

  6. Python获取当前时间日期

    Python获取当前时间日期 Python获取当前时间日期 一.时间日期基本介绍 二.时间日期类型–time模块 2.1 获取当前时间戳 2.2 将时间戳转化为标准时间日期格式 2.3 格式化时间 三 ...

  7. Java获取系统时间日期存储到数据库Timestamp时间限制

    由于Java中没有datetime数据类型,timestamp类型数据在数据库中只能存储到2038年,数据库中存完整的时间日期可以使用datetime.本文主要探索在Java中使用Timestamp类 ...

  8. python时间日期字符串各种

    python时间日期字符串各种 python时间日期字符串各种 第一种 字符串转换成各种日期 time 库 # -*- coding: utf-8 -*- import time, datetime ...

  9. Numpy入门教程:11. 时间日期和时间增量

    序言 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python.其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执 ...

最新文章

  1. 史上最详细的微生物扩增子数据库整理
  2. form-data php,PHP 模拟form-data上传文件
  3. 打造大型直播平台之《PC客户端架构》
  4. HTML5怎样设置站点,我是怎样让网站用上HTML5 Manifest
  5. jsencrypt加密同一值返回不同密文_密码学原语如何应用?解析密文同态性的妙用...
  6. 阿里云应用高可用 AHAS 正式商用,可一键提升云上应用可用性
  7. 【报告分享】2020成人用品报告-京东大数据研究院.pdf(附下载链接)
  8. 三维点云学习(3)6- 实现K-Means
  9. Yann LeCun提出首个多模态高性能自监督算法,语音、图像文本全部SOTA
  10. 释放pytorch占用的gpu显存_再次浅谈Pytorch中的显存利用问题(附完善显存跟踪代码)...
  11. 为什么你还没有买新能源汽车? 1
  12. C#多摄像头切换调用,并扫描二维码
  13. 快递电子运单上,电话应隐藏6位以上,禁止显示这些信息
  14. 阿里一二三面、HR面面经-后台
  15. “漏洞百出”的智能音箱,为何能“发大财”?
  16. 视频号互刷赞会不会出现限流的问题?
  17. 心血来潮,开通了博客
  18. 港交所新股发售竞争激烈:网易云音乐暗盘破发,凯莱英、顺丰同城等暂未获得足额申购
  19. 全网最全find()函数用法
  20. 什么是STN黄绿模、什么是蓝模、什么是灰模

热门文章

  1. python爬虫--小说爬取
  2. 微信小程序开发(原生和uniapp)DOM标签对比介绍
  3. scala中deMd5加密
  4. 计算机删除打印记录,怎样消除电脑打印痕迹
  5. 计算机打开硬盘响应慢,电脑处理多任务卡顿,开机反应慢,换固态硬盘不能解决问题根本...
  6. java程序员那些提升_Java程序员如何进行自我提升?
  7. php seekdir,C++_详解C语言中telldir()函数和seekdir()函数的用法,C语言telldir()函数:取得目录流 - phpStudy...
  8. HTTP协议实现文件下载
  9. Activity启动过程源码分析
  10. 论文阅读 激光脉冲主动非视距成像+深度学习 || Learned Feature Embeddings for Non-Line-of-Sight Imaging and Recognition