前言
使用time函数、tm结构体、local函数、put_time函数实现格式化输出时间。
形如[2024-06-14 18:19:14]
格式化时间代码实现
void Print_Time()
{// 获取当前时间戳time_t now_time = time(nullptr);// 将time_t 转换为tm结构std::tm* local = localtime(&now_time);// 格式化输出当前时间std::cout << std::put_time(local, "%Y-%m-%d %H:%M:%S") << " ";
}
int main()
{Print_Time();return 0;
}
输出结果如下
2024-06-14 20:30:05
time函数
原型:time_t time(time_t *tloc);
头文件:<ctime>
返回值:当前时间的时间戳
参数:这是一个指向 time_t 类型对象的指针。如果此参数不为空(即不是nullptr
或NULL
),则函数会将当前时间存储在这个对象中。如果此参数为空,则函数会忽略它。
struct tm结构体
struct tm
{int tm_sec; // 秒数 - [0, 60] 包含闰秒int tm_min; // 分钟数 - [0, 59]int tm_hour; // 小时(24小时制) - [0, 23]int tm_mday; // 一个月中的日期 - [1, 31]int tm_mon; // 月份 - [0, 11]int tm_year; // 从1900开始算的年份int tm_wday; // 星期几 0表示周日 - [0, 6]int tm_yday; // 一年中的第几天 - [0, 365]int tm_isdst; // 夏令时标识符
};
localtime函数
原型:struct tm *localtime(const time_t *timep);
头文件:<ctime>
返回值:函数返回一个指向 tm
结构体的指针,该结构体包含了本地时间的详细信息(日期、时间等)。如果函数失败,它将返回空指针(nullptr)。
参数:这是一个指向 time_t
类型对象的指针,该对象包含了一个以秒为单位的时间戳。
put_time函数
原型:
template <class charT>
put_time( const struct tm* tmb, const charT* fmt);
头文件:<iomanip>
功能:用于格式化输出 tm 类型的数据。
返回值:函数返回对输入流os
的引用,以便进行链式调用。
参数 | 功能 |
const struct tm* tmb | 存取着待格式化输出的时间数据 |
const charT* fmt | 一个 C 风格的字符串,指定了日期和时间的格式。这个字符串可以包含多种格式说明符 |
格式说明符
%a | 缩写的星期几名称(如Sun)。 |
%A | 完整的星期几名称(如Sunday)。 |
%b | 缩写的月份名称(如Jan)。 |
%B | 完整的月份名称(如January)。 |
%c | 日期和时间的完整表示(如Wed Jun 30 21:49:08 2023\n\t)。 |
%C | 年份除以100的整数部分(如20表示2000-2099)。 |
%d | 一个月中的第几天(01-31)。 |
%D | 等同于%m/%d/%y。 |
%e | 一个月中的第几天(1-31),前面没有前导零。 |
%F | 等同于%Y-%m-%d(ISO 8601日期格式)。 |
%g | 与%G相同,但不包含世纪。 |
%G | 基于ISO 8601的年份(四位数)。 |
%h | 等同于%b。 |
%H | 小时(00-23)。 |
%I | 小时(01-12)。 |
%j | 一年中的第几天(001-366)。 |
%m | 月份(01-12)。 |
%M | 分钟(00-59)。 |
%n | 换行符。 |
%p | AM或PM(用于12小时制)。 |
%r | 12小时制的时间表示(如11:11:04 PM)。 |
%R | 等同于%H:%M。 |
%S | 秒(00-60)。 |
%t | 水平制表符。 |
%T | 等同于%H:%M:%S。 |
%u | 星期几(1-7),1表示星期一,7表示星期天(与POSIX的%u不同)。 |
%U | 一年中的第几周,星期天作为一周的第一天(00-53)。 |
%V | ISO 8601的一年中的第几周(01-53) |
%w | 星期几(0-6),0表示星期天。 |
%W | 一年中的第几周,星期一作为一周的第一天(00-53)。 |
%x | 日期表示(如06/30/2023)。 |
%X | 时间表示(如21:49:08)。 |
%y | 年份的最后两位(00-99)。 |
%Y | 年份(四位数)。 |
%% | 输出%字符。 |
感谢阅读