首页 > 编程语言 >C++ 日期&时间

C++ 日期&时间

时间:2023-10-28 16:23:25浏览次数:34  
标签:函数 int C++ 日期 tm 时间 time

C++ 日期&时间

C++标准库没有提供所谓的日期类型。C++继承了C语言用于日期和实际操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在C++程序中引用<ctime>头文件。有四个与时间相关的类型:

  • clock_t
  • time_t
  • size_t
  • tm
    能够把系统时间和日期表示为某种整数。结构类型tm把日期和时间以C结构的形式保存,tm结构的定义如下
struct tm{
  int tm_sec;//秒,正常范围0-59
  int tm_min;//分,范围0-59
  int tm_hour;//小时,范围0-23
  int tm_mday;//一个月中的第几天,范围1-31
  int tm_mon;//月,范围0-11
  int tm_year;//自1900年起的年数
  int tm_wday;//一周中的第几天,范围0-6
  int tm_yday;//一年中的第几页,范围0-365,从1月1日算起
  int tm_isdst;//夏令时
}

下面是C/C++中关于日期和时间的重要函数。所有这些函数都是C/C++标准库的组成部分,可以在C++标准库中查看一下各函数的细节。

函数 描述
time_t time(time_t *time) 该函数返回系统的当前日历时间,自1900年1月1日以来经过的秒数,如果系统没有时间,返回-1
char *ctime(const time_t *time) 该函数返回一个表示当地时间的字符串指针,字符串形式day month year hours:minutes:seconds year\n。
struct tm *localtime(const time_t *time); 该函数返回一个指向表示本地时间的 tm 结构的指针。
clock_t clock(void); 该函数返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。如果时间不可用,则返回 -1。
char * asctime ( const struct tm * time ); 该函数返回一个指向字符串的指针,字符串包含了 time 所指向结构中存储的信息,返回形式为:day month date 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(){
	time_t now = time(0);//基于当前系统的当前日期/时间
	char* dt = ctime(&now);//把now转为字符串形式
	cout<<"local time:"<<dt<<endl;
	tm *gmgt = gmtime(&now);
	dt = asctime(gmgt);//UTC时间和我们时间差8h
	cout<<"UTC time:"<<dt<<endl;
	return 0;
}

结果输出:

  • 使用结构tm格式化时间
    tm结构在C/C++中处理日期和时间相关操作时,显得非常重要。tm结构以C结构的形式保存日期和时间。大多数与时间相关的函数都使用了tm结构。下面实例使用了tm结构与各种日期和时间相关的函数。
#include <iostream>
#include<ctime>
using namespace std;
int main(){
	time_t now = time(0);//基于当前系统获取当前日期和时间
	cout<<"from 1970.1.1 to now, the seconds:"<<now<<endl;
	tm *ltm = localtime(&now);
	cout<<"year:"<<1900+ltm->tm_year<<endl;
	cout<<"month:"<<1+ltm->tm_mon<<endl;
	cout<<"day:"<<ltm->tm_mday<<endl;
	cout<<"time:"<<ltm->tm_hour<<":";
	cout<<1+ltm->tm_min<<":";
	cout<<1+ltm->tm_sec<<endl;
	return 0;
}

结果显示:

标签:函数,int,C++,日期,tm,时间,time
From: https://www.cnblogs.com/bonne-chance/p/17794216.html

相关文章

  • Linux中设置NTP时间同步服务器的方法
    概括:在Linux中设置NTP时间同步服务器是确保多台主机之间时间同步的重要步骤。本文将从四个方面详细阐述Linux中设置NTP时间同步服务器的方法,包括安装NTP、配置NTP客户端、配置NTP服务器以及常见问题及其解决方法。1、安装NTP安装NTP是为了确保Linux主机能够正常运行时间同......
  • C++引用
    C++引用引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字,一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。C++引用vs指针引用很容易与指针混淆,它们之间有三个主要区别:不存在空引用,引用必须连接到一块合法的内存一旦引用被初始化为一个对象......
  • 面向对象(C++)
    -1待填坑:运算符重载,模板和泛型编程。文件输入输出跨文件使用全局变量应该先用extern声明如果在全局变量和全局函数前面加上static关键字,就无法在其他文件中使用这些变量和函数了。0、动态内存分配分配内存:int*p=newint(4);//注意是一个变量初值为4int*list=newint[......
  • C++指针
    C++指针学习C++指针既简单又有意思。通过指针可以简化一些C++编程任务的执行,还有一些任务,例如动态内存分配,没有指针是无法执行的。因此学习指针是很有必要的。每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。实例......
  • C++ 语法结构--堆
    1.堆介绍「堆heap」是一种满足特定条件的完全二叉树,主要可分为图8-1所示的两种类型。「大顶堆maxheap」:任意节点的值其子节点的值。「小顶堆minheap」:任意节点的值其子节点的值。堆作为完全二叉树的一个特例,具有以下特性。最底层节点靠左填充,其他层的节点都被填......
  • 【小星星直播互动宝】——第一时间回复用户问题,自动语音回复,实现无人值守直播
    无人直播已成为当下热门的互联网趋势,然而,频繁的语音重复和低频互动行为常常影响用户体验,给主播和观众带来不必要的困扰。为了解决这一问题,我们地推出了【小星星直播互动宝】,一款功能强大的无人直播语音交互软件,配合小星星去重播放器,为您带来全新的直播体验! 目前支持平台:快手......
  • C++字符串
    C++字符串C++提供了两种类型的字符串表示形式:C风格字符串C++引入的string类类型C风格字符串C风格的字符串源于C语言,并在C++中继续得到支持。字符串实际上是使用Null字符终止的一堆字符数组。因此一个以NULL结尾的字符串,包含了组成字符串的字符。下面的声明和初始化创建了......
  • 【C++】继承 ⑪ ( 多继承 | 多继承语法 | 多继承案例 )
    文章目录一、多继承1、多继承基本语法2、多继承子类构造初始化3、多继承中访问父类成员二、多继承案例1、代码示例-简单多继承案例2、代码示例-多继承构造函数案例一、多继承1、多继承基本语法多继承概念:一个子类(派生类)可以继承多个父类(派生类);一个类......
  • Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh
    时间序列分析在金融和医疗保健等领域至关重要,在这些领域,理解随时间变化的数据模式至关重要。在本文中,我们将介绍四个主要的Python库——statmodels、tslearn、tssearch和tsfresh——每个库都针对时间序列分析的不同方面进行了定制。这些库为从预测到模式识别的任务提供了强大的工......
  • linux解压缩,复制,重命名,删除,目录按更新时间排序,grep递归搜索文档
    linux解压缩,复制,重命名,删除,目录按更新时间排序,grep递归搜索文档1.解压缩压缩命令zip-p-rmymail-1026.zipmymail/解压命令unzipmymail-1026.zip2.复制将文件file1复制到dir1目录下的file2文件cpfile1dir1/file2将文件夹source_dir复制到target_dir目前并且修改......