C++ ctime strftime() 函数

定义和用法

strftime() 函数将一个日期和时间的 C 风格字符串表示形式(由 tm 结构体提供)写入一个字符数组中。格式参数指定日期和时间的表示方式。

注意:使用 gmtime()localtime() 函数从时间戳中获取 tm 结构体。

格式字符串

格式字符串被复制到数组中,其中的每个格式说明符都被生成的值替换。下表列出了所有格式说明符:

格式说明符 描述 示例
%a 星期几的简写 Fri
%A 星期几的全称 Friday
%b 月份名称的简写 Dec
%B 月份名称的全称 December
%c 完整的日期和时间表示形式 Fri Dec 17 14:30:01 2023
%C 世纪(相当于取 4 位年份的前两位) 20
%d 月份中的天数,带前导零 09
%D 日期表示形式,等效于 %m/%d/%y 12/17/23
%e 月份中的天数,带前导空格 9
%F 日期表示形式,等效于 %Y-%m-%d 2023-12-17
%g 两位数的基于周的年份(基于周的年份从一周的开始算起) 23
%G 四位数的基于周的年份(基于周的年份从一周的开始算起) 2023
%h 月份名称的简写(等效于 %b) Dec
%H 24 小时制的小时数 14
%I 12 小时制的小时数 02
%j 一年中的天数(从 0 到 365) 351
%m 月份的数字表示形式 12
%M 一小时内的分钟数 30
%n 一个换行符 \n
%p AM 或 PM PM
%r 完整的 12 小时制时间格式 02:30:01 PM
%R 24 小时制时间格式,等效于 %H:%M 14:30
%S 一分钟内的秒数 01
%t 一个制表符 \t
%T 完整的 24 小时制时间格式,等效于 %H:%M:%S 14:30:01
%u 一周中的某天的数字表示形式(从 1 到 7,从星期一开始) 7
%U 一年中的周数,从 0 开始,第 1 周从一年的第一个星期日开始 51
%V 一年中的周数,从 1 开始,第 1 周从一年的第一个星期一开始,且 1 月中第一个星期一之前的任何一天都属于上一年 50
%w 一周中的某天的数字表示形式(从 0 到 6,从星期日开始) 0
%W 一年中的周数,从 0 开始,第 1 周从一年的第一个星期一开始 50
%x 基于区域设置的日期表示形式 12/17/23
%X 基于区域设置的时间表示形式 14:30:01
%y 两位数的年份表示形式 23
%Y 四位数的年份表示形式 2023
%z 数字时区偏移量 +0000
%Z 时区名称 GMT
%% 一个 % 字符 %

实例

以不同方式表示当前日期:

time_t timestamp;
char output[50];
struct tm * datetime;

time(&timestamp);
datetime = localtime(&timestamp);

strftime(output, 50, "%B %e, %Y", datetime);
cout << output << "\n";

strftime(output, 50, "%I:%M:%S %p", datetime);
cout << output << "\n";

strftime(output, 50, "%D", datetime);
cout << output << "\n";

strftime(output, 50, "%c", datetime);
cout << output << "\n";

亲自试一试

语法

strftime(char * destination, size_t size, const char * format, const struct tm * datetime);

size_t 数据类型表示非负整数。

参数

参数 描述
destination 必需。字符数组,用于写入格式化的日期。
size 必需。指定字符数组中可用于写入的可用空间大小,以字符为单位测量。
format 必需。指定日期的格式。
datetime 必需。tm 结构体,包含要表示的日期和时间信息。

技术细节

返回:

数字,表示写入数组的字符数。

返回值为 0 表示没有足够的可用空间进行写入。