时间转换函数 strftime() 的使用方法和示例
strftime() 是 C 库中的一个函数,用于将时间按照指定的格式输出。其中,strftime()的参数包括两个,分别是目标字符串的缓冲区和格式化字符串。目标字符串的缓冲区用来存储由格式化字符串格式化过的时间值,格式化字符串则决定了时间的输出格式。
strftime()函数使用的格式化字符串中包含了一些占位符,这些占位符会被转换成对应的时间属性,例如年、月、日、时、分、秒等等。下面是一些占位符的示例:
| 占位符 | 描述 |
| ---- | ------------- |
| %a | 缩写的星期几名称 |
| %A | 完整的星期几名称 |
| %b | 缩写的月份名称 |
| %B | 完整的月份名称 |
| %c | 不带前导零的月份和日,以及小时、分钟、秒的时间 |
| %C | 世纪数,以两位数字表示 |
| %d | 日期,以两位数字表示 |
| %D | 等同于 %m/%d/%y |
| %e | 日期,以一个或两个空格加上一个数字表示 |
| %F | 等同于 %Y-%m-%d |
| %g | ISO 年份的最后两位 |
| %G | ISO 年份 |
| %h | 等同于 %b |
| %H | 小时,以两位数字表示 |
| %I | 小时,以十二小时制表示 |
| %j | 年份的第几天,以三位数字表示 |
| %k | 小时,以一个或两个空格加上一个数字表示 |
| %l | 小时,以十二小时制表示 |
| %m | 月份,以两位数字表示 |
| %M | 分钟,以两位数字表示 |
| %n | 换行符 |
| %p | AM 或 PM |
| %r | 等同于 %I:%M:%S %p |
| %R | 等同于 %H:%M |
| %S | 秒数,以两位数字表示 |
| %t | 制表符 |
| %T | 等同于 %H:%M:%S |
| %u | 以数字表示的星期几,1 表示星期一 |
| %U | 年份的第几周,以两位数字表示 |
| %V | ISO 年份的第几周,以两位数字表示 |
| %w | 星期几名称的数字表示,0 表示星期天 |
| %W | 年份的第几周,以两位数字表示 |
| %x | 不带时分秒的日期 |
| %X | 不带日期的时分秒 |
| %y | 年份的最后两位数字 |
| %Y | 年份,以四位数字表示 |
| %z | 时区偏移量 |
| %Z | 时区名称 |
| %% | 百分号 |
下面是一些使用示例:
1. 将当前时间以 YYYY-MM-DD HH:MM:SS 的格式输出:
#include <stdio.h>
#include <time.h>
int main() {
time_t current_time;
struct tm * time_info;
char time_string[20];
time(¤t_time);
time_info = localtime(¤t_time);
strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", time_info);
printf("%s
", time_string);
return 0;
}
输出结果如下:
2021-06-18 10:25:37
2. 将当前时间以周几,月份和日期的格式输出:
#include <stdio.h>
#include <time.h>
int main() {
time_t current_time;
struct tm * time_info;
char time_string[20];
time(¤t_time);
time_info = localtime(¤t_time);
strftime(time_string, sizeof(time_string), "%a, %b %d", time_info);
printf("%s
", time_string);
return 0;
}
输出结果如下:
Fri, Jun 18
3. 将当前时间以 DD-MM-YYYY 的格式输出:
#include <stdio.h>
#include <time.h>
int main() {
time_t current_time;
struct tm * time_info;
char time_string[20];
time(¤t_time);
time_info = localtime(¤t_time);
strftime(time_string, sizeof(time_string), "%d-%m-%Y", time_info);
printf("%s
", time_string);
return 0;
}
输出结果如下:
18-06-2021
4. 将当前时间以 HH:MM:SS 的格式输出:
#include <stdio.h>
#include <time.h>
int main() {
time_t current_time;
struct tm * time_info;
char time_string[20];
time(¤t_time);
time_info = localtime(¤t_time);
strftime(time_string, sizeof(time_string), "%H:%M:%S", time_info);
printf("%s
", time_string);
return 0;
}
输出结果如下:
10:25:37
在这些示例中,我们可以看到 strftime() 的使用方法以及如何使用占位符来格式化时间。通过参考占位符表格,我们可以将时间在需要的位置按照需要的格式输出。同时,strftime() 函数还支持更多的参数选项,例如使用国际化的字符集、指定时区等等。在实际的应用中,需要根据具体的需求来选取并使用适当的格式化方式。
