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(×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(char * destination, size_t size, const char * format, const struct tm * datetime);
size_t
数据类型表示非负整数。
参数
参数 | 描述 |
---|---|
destination | 必需。字符数组,用于写入格式化的日期。 |
size | 必需。指定字符数组中可用于写入的可用空间大小,以字符为单位测量。 |
format | 必需。指定日期的格式。 |
datetime | 必需。tm 结构体,包含要表示的日期和时间信息。 |
技术细节
返回: |
数字,表示写入数组的字符数。 返回值为 0 表示没有足够的可用空间进行写入。 |
---|