首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

APUE 中 strftime() E/O 修飾符含義與用法詳解

     編輯:程式設計綜合問答

原文困惑

「同 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日 (全形數字)

前置條件

  • 系統安裝了對應的 locale 定義文件(/usr/share/locale 或 Windows 區域設置)。
  • 程序運行前調用 setlocale(LC_TIME, "") 啟用當前環境 locale。
  • 並非所有 locale 都提供完整的 E/O 替代格式,視具體 locale 定義而定。

參考手冊

Linux man page strftime(3) - 完整轉換說明表

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved