C++ ctime strftime() 函数
示例
以不同方式表示当前日期
time_t timestamp;
char output[50];
struct tm * datetime;
time(×tamp);
datetime = localtime(×tamp);
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()
函数将日期和时间(由 tm
结构提供)的 C 风格字符串表示形式写入 char
数组。一个 format 参数指定日期和时间如何表示。
注意: 使用 gmtime()
或 localtime()
函数从时间戳获取 tm
结构。
格式字符串
格式字符串被复制到数组中,其每个 格式说明符 都被生成的值替换。下表列出了所有格式说明符
格式说明符 | 描述 | 示例 |
---|---|---|
%a |
星期的简短表示 | 星期五 |
%A |
星期的完整表示 | 星期五 |
%b |
月份名称的简短表示 | Dec |
%B |
月份名称的完整表示 | 十二月 |
%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 |
月份的数字表示 | 351 |
%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,星期一为 1) | 7 |
%U |
年份中的周数(从 0 开始,第 1 周从该年的第一个星期日开始) | 51 |
%V |
年份中的周数(从 1 开始,第 1 周从该年的第一个星期一开始,一月在第一个星期一之前的任何一天都属于前一年) | 50 |
%w |
星期几的数字表示(从 0 到 6,星期日为 0) | 0 |
%W |
年份中的周数(从 0 开始,第 1 周从该年的第一个星期一开始) | 50 |
%x |
基于区域设置的日期表示 | 12/17/23 |
%X |
基于区域设置的时间表示 | 14:30:01 |
%y |
两位数的年份表示 | 23 |
%Y |
四位数的年份表示 | 2023 |
%z |
数字时区偏移量 | +0000 |
%Z |
时区名称 | 格林尼治标准时间 |
%% |
一个 % 字符 |
% |
语法
strftime(char * destination, size_t size, const char * format, const struct tm * datetime);
size_t
数据类型表示一个非负整数。
参数值
参数 | 描述 |
---|---|
destination | 必需。一个 char 数组,用于写入格式化的日期。 |
大小 | 必需。指定 char 数组中可用于写入的空间量,以字符为单位。 |
format | 必需。指定日期应如何格式化。 |
datetime | 必需。一个 tm 结构,包含要表示的日期和时间信息。 |
技术详情
返回 | 一个数字,表示写入数组的字符数。返回值为 0 表示没有足够的可用空间可写入。 |
---|