日期与时间(C/C++)
C++继承了C语言用于日期和时间操作的结构和函数,使用之前程序要引用<ctime>头文件
有四个与时间相关的类型:clock_t、time_t、size_t、和tm。类型clock_t、size_t、和time_t能够把系统时间和日期表示为某种整数。
结构体tm把时间和日期以C结构的形式保存,tm结构的定义如下:
struct tm
{
int tm_sec; //秒,正常范围0 ~59,但是允许到61
int tm_min; //分 范围 0~59
int tm_hour; //小时 0~23
int tm_mday; //一月中的第几天
int tm_mon; //月 0~11
int tm_year; //自1900年起的年数
int tm_wday; //一周中的第几天
int tm_yday; //一年中的第几天
int tm_isdst; //夏令时
}
相关函数:
|
函数 |
描述 |
|
time_t time(time_t *time); |
该函数返回系统的当前日历时间。自1970年1月1日以来经过的秒数,如果系统没有时间,返回-1 |
|
char *ctime(const time_t *time); |
该函数返回一个表示当地时间的字符串指针,字符串形式day month year hours:minutes:seconds year\n\0 |
|
struct tm *localtime(const time_t *time); |
该函数返回一个指向表示本地时间的tm结构的指针。 |
|
clock_t clock(void); |
该函数返回程序执行起,处理器时间所使用的时间,如果时间不可用,则返回-1 |
|
char *asctime(const struct tm *time); |
该函数返回一个指向字符串的指针,字符串包含了time所指向结构中存储的信息,返回的形式为:day month year hours:minutes:seconds year\n\0 |
|
struct tm *gmtime(const time_t *time); |
该函数返回一个指向time的指针,time为tm结构,用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示 |
|
time_t mktime(struct tm *time); |
该函数返回日历时间,相当于time所指向结构中存储的时间 |
|
double difftime(time_t time2,time_t time1); |
该函数返回time1和time2之间相差的秒数 |
|
size_t strftime(); |
该函数可用于格式化日期和时间为指定的格式 |
实例:
#include<iostream>
#include<ctime>
using namespace std; int main()
{
//基于当前系统日期和时间 初始化0
time_t now = time(); /把now转换成字符串形式
char *dt = ctime(&now); cout << "local date and time: " << dt << endl; //把now转化成tm结构
tm *gmtm = gmtime(&now);
dt = asctime(gmtm);
cout << "UTC date and time : " << dt << endl;
return ;
}
运行结果:
exbot@ubuntu:~/wangqinghe/C++/time$ ./time
local date and time: Mon Aug 5 14:54:25 2019
UTC date and time : Mon Aug 5 06:54:25 2019
使用结构体tm格式化时间
#include<iostream>
#include<ctime>
using namespace std; int main()
{
time_t now = time(); cout << "from 1970 then the seconds passed : " << now << endl; tm* ltm = localtime(&now); cout << "year : " << + ltm->tm_year << endl;
cout << "month : " << + ltm->tm_mon << endl;
cout << "day : " << ltm->tm_mday << endl;
cout << "hour : " << ltm->tm_hour << ":";
cout << ltm->tm_min << ":";
cout << ltm->tm_sec << endl;
return ;
}
运行结果:
exbot@ubuntu:~/wangqinghe/C++/time$ ./time1
from 1970 then the seconds passed : 1564988067
year : 2019
month : 8
day : 5
hour : 14:54:27
以20xx-xx-xx xx:xx:xx格式输出结果:
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<cstdio> using namespace std; string Get_Current_Date(); int main()
{
cout << Get_Current_Date().c_str() << endl;
return ;
} string Get_Current_Date()
{
time_t nowtime;
nowtime = time(NULL);
char tmp[];
strftime(tmp,sizeof(tmp),"%Y-%m-%d %H:%M:%S",localtime(&nowtime));
return tmp;
}
运行结果:
exbot@ubuntu:~/wangqinghe/C++/time$ ./time2
2019-08-05 15:00:14
日期与时间(C/C++)的更多相关文章
- [Java]Java日期及时间库插件 -- Joda Time.
来到新公司工作也有一个多月了, 陆陆续续做了一些简单的项目. 今天做一个新东西的时候发现了 Joda Time的这个东西, 因为以前用的都是JDK原生的时间处理API, 大家都知道Java原生的时间处 ...
- SharePoint 2013 日期和时间字段格式设置
前言 最近碰到一个需求,用户希望修改日期和时间字段的格式,因为自己的环境是英文的,默认的时间格式是[月/日/年]这样的格式,我也是碰到这个问题才知道,这是美式的时间格式,然而用户希望变成英式的时间格式 ...
- MySQL 日期、时间转换函数
MySQL 日期.时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式.它是 str_to ...
- python笔记7:日期和时间
Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. 时间 ...
- PHP的日期和时间处理函数
1. 将日期和时间转变为时间戳 1.1 time() 原型:time(void) 作用:返回当前时间的 UNIX时间戳. 参数:void,可选(即无参数) 1.2 mktime() 原型:int mk ...
- VB6.0中,DTPicker日期、时间控件不允许为空时,采用文本框与日期、时间控件相互替换赋值(解决方案)
VB6.0中,日期.时间控件不允许为空时,采用文本框与日期.时间控件相互替换赋值,或许是一个不错的选择. 实现效果如下图: 文本框txtStopTime1 时间框DTStopTime1(DTPicke ...
- Sql Server系列:日期和时间函数
1. 获取系统当前日期函数GETDATE() GETDATE()函数用于返回当前数据库系统的日期和时间,返回值的类型为datetime. SELECT GETDATE() 2. 返回UTC日期的函数G ...
- Sql Server函数全解(四)日期和时间函数
日期和时间函数主要用来处理日期和时间值,本篇主要介绍各种日期和时间函数的功能和用法,一般的日期函数除了使用date类型的参数外,也可以使用datetime类型的参数,但会忽略这些值的时间部分.相同 ...
- SQL Server 日期和时间函数
http://www.cnblogs.com/adandelion/archive/2006/11/08/554312.html 1.常用日期方法(下面的GetDate() = '2006-11-08 ...
- PHP日期与时间
时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数.它也被称为 Unix 时间戳(Unix Timestamp).Unix时间戳(Unix timestamp),或称Uni ...
随机推荐
- 第10章:深入浅出Ansible
1.Ansible介绍 1).Ansible的优点 Ansible是一个简单的自动化引擎,可完成配置管理.引用部署.服务编排以及其他各种IT需求 Ansible是Python开发并实现的开源软件,其依 ...
- 10-MySQlL DBA笔记-基础知识
第四部分 运维篇 首先来了解一下数据库的定义,数据库是高效的.可靠的.易用的.安全的多用户存储引擎,我们可以通过它访问大量的持久化数据.我们管理和维护数据库,本质上也是要确保如上的特性,尽可能地保证数 ...
- VS显示方法引用
菜单栏 工具->选项->文本编辑器->所有语言->CodeLens 勾上即可
- 无法删除登录名 '***',因为该用户当前正处于登录状态。 (Microsoft SQL Server,错误: 15434)
问题描述: 当删除数据库用户时,有时会得到这样的提示: 无法删除登录名 '***',因为该用户当前正处于登录状态. (Microsoft SQL Server,错误: 15434) 解决办法: 1.首 ...
- 函数——es6函数扩展(二)
一.声明 1. let(变量) 可以只声明不给值(默认为undefined),或者是先声明后给值,但是必需声明后再使用,可以重复赋值,可以防止变量泄露: 同一作用域里不能重复的声明,不同作用域里可以, ...
- 8.SpringMVC注解式开发-HelloWorld
第一个注解式开发程序 SpringMVC 是 Spring 框架的一部分,所以它和Spring结合的是非常紧密的 使用 @Controller 注解,既可以将处理器交给Spring容器去管理,又可以说 ...
- php的三个常用判断函数
<?phperror_reporting(E_ERROR);$a;$b = false;$c = '';$d = 0;$e = null;$f = array(); echo 'empty', ...
- 关于rtos中任务切换时的程序流程
今天和一个小伙伴讨论了一下基于cortex-m3内核的RTOS在任务切换时的程序流程,小伙伴说国内某搜索引擎都搜不到这类的信息,所以我才打算写下来,硬件平台是stm32f1. 这里的切换有两种情况: ...
- python面向对象:组合、封装、property装饰器、多态
一.组合二.封装三.property装饰器四.多态 一.组合 ''' 1. 什么是组合 一个对象的属性是来自于另外一个类的对象,称之为组合 2. 为何用组合 组合也是用来解决类与类代码冗余的问题 3. ...
- Hadoop_20_MapReduce程序的运行模式
1.MapReduce程序的运行模式 1. Windows中运行MapReduce程序 (1)mapreduce程序是被提交给LocalJobRunner在本地以单进程的形式运行 (2)而处理的数据及 ...