「同 printf 一樣,strftime 對某些轉換說明支持修飾符。可以使用 E 和 O 修飾符產生本地時間支持的另一種格式。」
| 修飾符 | 含義 | 示例(配合 %x %X %c 等) |
|---|---|---|
| E | 使用**本地時代相關**的替代表示(如日曆年代、年份計算方式)。 | %Ec 本地時代日期時間;%EY 完整替代年份;%Ex 替代日期表示。 |
| O | 使用**本地數字符號**的替代數字(如阿拉伯數字以外的本土數字)。 | %Od 本地數字的日;%Om 本地數字的月;%Oy 本地數字的年。 |
// 假設當前 locale 為 ja_JP (日語)
char buf[100];
time_t t = time(NULL);
struct tm *tm = localtime(&t);
// 標準格式
strftime(buf, sizeof(buf), "%Y-%m-%d", tm); // 2024-03-15
// 使用 E 修飾符:和曆年份
strftime(buf, sizeof(buf), "%EY年%m月%d日", tm); // 令和6年03月15日
// 使用 O 修飾符:日語漢字數字
strftime(buf, sizeof(buf), "%Oy年%Om月%Od日", tm); // 2024年3月15日 (全形數字)
/usr/share/locale 或 Windows 區域設置)。setlocale(LC_TIME, "") 啟用當前環境 locale。