文章目录
- C++ | C++日期&时间
- 时间/日期相关的函数:
- 实例1:
- 实例2:
- 实例3:
- 实例4:
C++ | C++日期&时间
C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。
为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用
头文件。
有四个与时间相关的类型:clock_t、time_t、size_t 和 tm。类型 clock_t
、size_t
和 time_t
能够把系统时间和日期表示为某种整数。
结构类型 tm 把日期和时间以 C 结构的形式保存,tm 结构的定义如下:
struct tm {
int tm_sec; /* seconds:秒,0~59 */
int tm_min; /* minutes:分,0~59 */
int tm_hour; /* hours:时,0~23 */
int tm_mday; /* day of the month:一个月中的第几天,1~31 */
int tm_mon; /* month:月份,0~11 */
int tm_year; /* year:年,从1900年算起 */
int tm_wday; /* day of the week:一周的第几天,0~6 */
int tm_yday; /* day in the year:一年的第几天,0~365 */
int tm_isdst; /* daylight saving time:夏令时 */
};
时间/日期相关的函数:
#include
char *asctime(const struct tm *tm);
char *asctime_r(const struct tm *tm, char *buf);
char *ctime(const time_t *timep);
char *ctime_r(const time_t *timep, char *buf);
struct tm *gmtime(const time_t *timep);
struct tm *gmtime_r(const time_t *timep, struct tm *result);
struct tm *localtime(const time_t *timep);
struct tm *localtime_r(const time_t *timep, struct tm *result);
time_t mktime(struct tm *tm);
clock_t clock(void);
double difftime(time_t time1, time_t time0);
size_t strftime(char *s, size_t max, const char *format,
const struct tm *tm);
实例1:
/*******************************************************************
* > File Name: time.cpp
* > Create Time: 2021年09月 2日 9:11:44
******************************************************************/
#include
#include
using namespace std;
int main(void)
{
time_t now = time(NULL);
cout
cout
struct tm *gmtm;
gmtm = gmtime(&now);
cout
return 0;
}
编译、运行:
PS E:fly-prjcplusplusday4> make
g++ -o time time.cpp -g -Wall
PS E:fly-prjcplusplusday4> .time.exe
now: 1630550825seconeds.
ctime: Thu Sep 2 10:47:05 2021
asctime: Thu Sep 2 02:47:05 2021
实例2:
/*******************************************************************
* > File Name: clock.cpp
* > Create Time: 2021年09月 2日 10:13:42
******************************************************************/
#include
#include
using namespace std;
int main(void)
{
clock_t start_time, end_time;
double total_t;
start_time = clock();
for(int i = 0; i {
}
end_time = clock();
cout cout
total_t = (double)(end_time - start_time)/CLOCKS_PER_SEC;
cout cout
return 0;
}
编译、运行:
PS E:fly-prjcplusplusday4> make
g++ -o clock clock.cpp -g -Wall
PS E:fly-prjcplusplusday4> .clock.exe
start_time: 31
end_time: 46
total_t: 0.015
CLOCKS_PER_SEC: 1000
实例3:
/*******************************************************************
* > File Name: difftime.cpp
* > Create Time: 2021年09月 2日 10:22:39
******************************************************************/
#include
#include
#include
using namespace std;
int main(void)
{
time_t startTime;
time_t endTime;
double totalTime;
startTime = time(NULL); /* 开始时间 */
sleep(5);
endTime = time(NULL); /* 结束时间 */
//totalTime = (double)(endTime - startTime);
totalTime = difftime(endTime, startTime); /* 花费时间 */
cout cout cout
return 0;
}
编译、运行:
PS E:fly-prjcplusplusday4> make
g++ -o difftime difftime.cpp -g -Wall
PS E:fly-prjcplusplusday4> .difftime.exe
startTime: 1630551304
endTime: 1630551309
totalTime: 5
实例4:
/*******************************************************************
* > File Name: strftime.cpp
* > Create Time: 2021年09月 2日 10:36:44
******************************************************************/
#include
#include
using namespace std;
int main(void)
{
time_t tm;
struct tm *pinfo;
char buf[80];
tm = time(NULL); /* 获取当前时间 */
pinfo = localtime(&tm); /* 转换成时间结构体 */
strftime(buf, 80, "%Y-%m-%d %H:%M:%S", pinfo); /* 输出特定格式的时间 */
cout
return 0;
}
编译、运行:
PS E:fly-prjcplusplusday4> make
g++ -o strftime strftime.cpp -g -Wall
PS E:fly-prjcplusplusday4> .strftime.exe
buf: 2021-09-02 10:59:39
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net