C++中的strftime()函数根据格式字符串将给定的日期和时间从给定的日历时间转换为以空结尾的多字节字符串。
strftime() 函数在<ctime>头文件中定义。
strftime() 原型
size_t strftime( char* str, size_t count, const char* format, const tm* time );
strftime() 函数有 4 个参数:str, count, format 和 time。
time指向的日期和时间信息根据format的值转换为空终止的多字节字符,存储在str指向的数组中。最多写入 count 个字节。
strftime() 参数
- str:指向用于存储结果的字符数组的第一个元素的指针。
- count:要写入的最大字节数。
- format:指向指定转换格式的以空结尾的多字节字符串的指针。格式字符串由转换说明符(以%开头,可选择后跟E或O)和其他普通字符组成。包括终止空字符在内的普通字符将按原样复制到输出字符串中。
- time:要转换的日期和时间信息。
strftime() 格式说明符 | ||
---|---|---|
转换说明符 | 描述 | 使用的字段 |
% | 写入字符 % | |
n | 写入换行符 | |
t | 写入水平制表符 | |
D | 相当于“%m/%d/%y” | tm_mon, tm_mday, tm_year |
F | 相当于“%Y-%m-%d” | tm_mon, tm_mday, tm_year |
R | 相当于“%H:%M” | tm_hour, tm_min |
T | 相当于“%H:%M:%S | tm_hour, tm_min, tm_sec |
P | 写入本地化的上午或下午(取决于区域设置) | tm_hour |
strftime() 返回值
- 如果成功,则strftime()函数返回写入由str指向的字符数组的字节数,不包括结尾的‘\0’。
- 如果在存储整个字符串之前达到Count,则返回0,并且内容未定义。
示例代码:
#define _CRT_SECURE_NO_WARNINGS
#include <ctime>
#include <iostream>
using namespace std;
int main()
{
time_t curr_time;
tm* curr_tm;
char date_string[100];
char time_string[100];
time(&curr_time);
curr_tm = localtime(&curr_time);
strftime(date_string, 50, "Today is %B %d, %Y", curr_tm);
strftime(time_string, 50, "Current time is %T", curr_tm);
cout << date_string << endl;
cout << time_string << endl;
return 0;
}
结果:
操作上有时间的延滞。