日期与时间(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 ...
随机推荐
- java Lesson08总结
package com.xt.java.FirstExciple.oop; public class NokiaPhone { //成员变量 String name="np001" ...
- WebStorm使用码云插件问题
由于项目需求,需要在WebStorm中使用码云插件,在下载安装的过程中出现一系列的问题,现总结出现的问题和解决方法. 先说一下码云是什么?码云有什么作用? 码云的主要功能: 码云除了提供最基础的 Gi ...
- 远程连接windows2003桌面无法使用剪切板的有效解决方法
远程桌面控制服务器时,无法剪切.粘贴一些东西,上网搜了一下,原来是rdpclip.exe(remote desktop clipboard)不起作用了.此程序负责管理本地机与远程服务器之间共享剪切板, ...
- 原生 JS 绑定事件 移除事件
监听事件的绑定与移除主要是addEventListener和removeEventListener的运用. addEventListener语法 element.addEventListener(ty ...
- Install CUDA 6.0 on Ubuntu 14.04 LTS
Ubuntu 14.04 LTS is out, loads of new features have been added. Here are some procedures I followed ...
- kubernetes 集群内部访问外部的数据库endpoint
k8s访问集群外独立的服务最好的方式是采用Endpoint方式,以mysql服务为例: 创建mysql-service.yaml apiVersion: v1 kind: Service metada ...
- 关于windows下编写的shell脚本在linux下无法运行报错问题
首先,你写的shell脚本必须是正确的, 其次,无法运行的原因:因为windows下的换行是两个字节,而你上传到linux,linux下换行是两个字节,所以编译的酒不正确的,导致无法 运行脚本, 这种 ...
- Stanford NLP 课程笔记之计算字符串距离
在自然语言处理任务中,有时候需要计算两个字符串之间的相似度,也可以称作是两者之间的距离,用最小编辑距离表示. 最小编辑距离用{Insertion,Deletion,Substitution}这三种操作 ...
- MUI 结合layui实现分页
mui自带有分页,在ui上我还是认为layui的友好点. 第三方插件: template-web.js-----------------前端数据绑定 layui.js.layui.css------- ...
- JDK,JRE,JVM 关系和概念
JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...