C++日期时间完全指南:ctime库、tm结构体与格式化输出
C++标准库无专属日期类型,继承C语言<ctime>头文件中的结构体与函数处理日期时间。
四大时间相关类型:clock_t、time_t、size_t、tm。前三者以整数形式表示系统时间/日期;tm结构体以字段形式拆解日期时间:
struct tm {
int tm_sec; // 秒 [0,61]
int tm_min; // 分 [0,59]
int tm_hour; // 时 [0,23]
int tm_mday; // 日 [1,31]
int tm_mon; // 月 [0,11] (0=1月)
int tm_year; // 年(从1900起算)
int tm_wday; // 周日以来天数 [0,6]
int tm_yday; // 1月1日起天数 [0,365]
int tm_isdst; // 夏令时标志
};
核心时间函数速查(均在<ctime>)
| 序号 | 函数与用途 |
|---|---|
| 1 |
返回自1970-01-01 00:00:00 UTC的秒数(时间戳)。失败返回-1。 |
| 2 |
将time_t转为字符串: |
| 3 |
将time_t转为本地时间 |
| 4 |
返回程序运行CPU时钟嘀嗒数。不可用返回-1。 |
| 5 |
将 |
| 6 |
转为UTC(格林威治时间) |
| 7 |
将 |
| 8 |
返回time2-time1的秒数差。 |
| 9 |
按指定格式化日期时间字符串。 |
获取当前本地时间与UTC
#include <iostream>
#include <ctime>
using namespace std;
int main() {
time_t now = time(0);
char* dt = ctime(&now);
cout << "本地时间: " << dt << endl;
tm *gmtm = gmtime(&now);
dt = asctime(gmtm);
cout << "UTC时间: " << dt << endl;
return 0;
}
示例输出:
本地时间: Sat Jan 8 20:07:41 2011
UTC时间: Sun Jan 9 03:07:41 2011
使用tm结构体拆解/格式化时间
tm结构是日期时间操作核心。假设读者掌握C结构体与->运算符。演示:
#include <iostream>
#include <ctime>
using namespace std;
int main() {
time_t now = time(0);
cout << "距1970-01-01秒数: " << now << endl;
tm *ltm = localtime(&now);
cout << "年: " << 1900 + ltm->tm_year << endl;
cout << "月: " << 1 + ltm->tm_mon << endl;
cout << "日: " << ltm->tm_mday << endl;
cout << "时间: " << ltm->tm_hour << ":"
<< ltm->tm_min << ":" << ltm->tm_sec << endl;
return 0;
}
输出示例:
距1970-01-01秒数: 1588485717
年: 2020
月: 5
日: 3
时间: 11:31:57
注意:tm_year需加1900,tm_mon需加1,tm_hour等直接使用。
C语言
- 计算电抗直流电路中的电压与电流
- C++结构体与类:嵌入式开发者实战指南
- 掌握 C++ 变量、字面量与常量:核心概念与实战指南
- C++类与对象:面向对象编程实战指南
- C++ 动态内存管理:new 与 delete 专家级实战指南
- C++ 三种继承方式深度解析:public、protected 与 private
- C++ 友元函数与友元类:突破访问控制的利器
- C++重载机制深度解析:函数重载与运算符重载全攻略
- C++文件I/O完全指南:fstream读写、打开模式、定位指针与完整实例
- Python 获取当前日期和时间:实用指南
- Python 日期时间处理实战:time 与 calendar 模块完全指南
- Java 8 全新日期时间 API:线程安全、设计优雅、时区处理轻松搞定