日期与时间(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 ...
随机推荐
- docker服务端与客户端通信方式
docker的服务端与客户端间可以通过unix.tcp方式进行通信.但默认情况下,服务端只监听本地unix接口/var/run/docker.sock,所以客户端只能在服务端所在的机器上使用该unix ...
- 监控 Kubernetes 集群应用
Prometheus的数据指标是通过一个公开的 HTTP(S) 数据接口获取到的,我们不需要单独安装监控的 agent,只需要暴露一个 metrics 接口,Prometheus 就会定期去拉取数据: ...
- varnish 子程序流程
VCL中主要动作: pass:当一个请求被pass后,这个请求将通过varnish转发到后端服务器,该请求不会被缓存,后续的请求仍然通过Varnish处理.pass可以放在vcl_recv 和vcl_ ...
- ELECTRON 打包
安装electron-packager cnpm install electron-packager -g 配置package.json "scripts": { "st ...
- Java BIO、NIO、AIO 基础,应用场景
Java对BIO.NIO.AIO的支持: Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必 ...
- 转载-对于Python中@property的理解和使用
原文链接:https://blog.csdn.net/u013205877/article/details/77804137 重看狗书,看到对User表定义的时候有下面两行 @property def ...
- linux驱动程序与菜单关联
- Python&Selenium 数据驱动【unittest+ddt+mysql】
一.摘要 本博文将介绍Python和Selenium做自动化测试的时候,基于unittest框架,借助ddt模块使用mysql数据库为数据源作为测试输入 二.SQL脚本 # encoding crea ...
- C#原子操作(Interlocked.Decrement和Interlocked.Increment)
一.概念 在多线程环境中,不会被线程调度机制打断的操作:这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程). 二.类 System.Threadin ...
- BZOJ3073 [Pa2011]Journeys[最短路—线段树优化建边]
新技能get✔. 线段树优化建边主要是针对一类连续区间和连续区间之间建边的题,建边非常的优秀.. 这题中,每次要求$[l1,r1]$每一点向$[l2,r2]$每一点建无向边,然后单元最短路. 暴力建边 ...