strftime
是一个用于格式化时间的函数,在 Linux 和 Unix 系统中广泛应用
设置本地化环境变量:
在程序运行之前,设置 LC_TIME
环境变量为相应的值,以便 strftime
使用正确的语言和格式。例如,如果你想使用简体中文格式,可以设置 LC_TIME=zh_CN.UTF-8
。在 shell 中,可以使用以下命令:
export LC_TIME=zh_CN.UTF-8
在 C 语言程序中,可以使用 setlocale()
函数设置本地化环境变量:
#include <locale.h>
int main() {
setlocale(LC_TIME, "zh_CN.UTF-8");
// ...
}
使用本地化的格式字符串:
strftime
支持特定的占位符,可以根据本地化设置生成相应的格式。以下是一些常用的占位符:
%d
:月中的第几天(01-31)%m
:月份(01-12)%Y
:四位数的年份(例如:2021)%y
:两位数的年份(例如:21)%H
:小时(24小时制,00-23)%I
:小时(12小时制,01-12)%p
:上午/下午标识(AM/PM)%M
:分钟(00-59)%S
:秒(00-59)在简体中文本地化设置中,这些占位符将根据相应的格式生成中文表示。例如:
#include <stdio.h>
#include <time.h>
int main() {
time_t rawtime;
struct tm * timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);
printf("日期:%d-%02d-%02d\n", 1900 + timeinfo->tm_year, timeinfo->tm_mon + 1, timeinfo->tm_mday);
printf("时间:%02d:%02d:%02d %p\n", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec, timeinfo->tm_isdst ? "下午" : "上午");
return 0;
}
输出将类似于:
日期:2022-07-20
时间:08:30:45 上午
通过以上方法,你可以使用 strftime
处理本地化。请注意,这里的示例是针对简体中文的,但你可以根据需要更改为其他语言。