strftime、 wcsftime、 _strftime_l、 _wcsftime_l
設定時間字串的格式。
size_t strftime(
char *strDest,
size_t maxsize,
const char *format,
const struct tm *timeptr
);
size_t _strftime_l(
char *strDest,
size_t maxsize,
const char *format,
const struct tm *timeptr,
_locale_t locale
);
size_t wcsftime(
wchar_t *strDest,
size_t maxsize,
const wchar_t *format,
const struct tm *timeptr
);
size_t _wcsftime_l(
wchar_t *strDest,
size_t maxsize,
const wchar_t *format,
const struct tm *timeptr,
_locale_t locale
);
參數
strDest
輸出字串。maxsize
大小的strDest以字元為單位來測量的緩衝區 (char或wchart_t)。format
控制項的格式字串。timeptr
tm資料結構。locale
使用地區設定。
傳回值
strftime傳回的字元放在strDest和wcsftime傳回相對應的寬字元數目。
如果總數目的字元,包括結尾的 null,多個maxsize,這兩個strftime和wcsftime傳回 0 與內容strDest是不確定的。
中的字元數strDest等於常值中的字元數字format ,也可能會增加任何字元format透過格式化程式碼。字串的結尾的 null 不計入傳回值。
備註
strftime和wcsftime函式格式tm時間值在timeptr來提供format引數,並存放在緩衝區中的結果strDest*.* 一般而言, maxsize字元放置在字串中。如需說明中的欄位timeptr結構,請參閱 asctime。 wcsftime相當於寬字元strftime。 其字串指標引數點寬字元字串。這些函式具有相同其他方式作業。
注意事項 |
---|
在之前的版本Visual C++ 2005,所述的文件format參數的wcsftime為具有資料類型const wchar_t *,但實際的實作format資料類型為const char *。 實作format資料類型已經更新以反映先前與目前文件,也就是const wchar_t *。 |
此函式會驗證它的參數。如果strDest, format,或timeptr指標是 null,或者如果tm所修正的資料結構timeptr是不正確(例如,如果它包含超出範圍值的時間或日期),或是否format字串包含不正確程式碼的格式設定、不正確的參數處理常式會叫用,如所述參數驗證。 如果要繼續,函式傳回 0,並設定允許執行errno到EINVAL。
泛用文字常式對應
TCHAR。H常式 |
_UNICODE & 未定義的 _MBCS |
定義的 _MBCS |
定義 _unicode 之後 |
---|---|---|---|
_tcsftime |
strftime |
strftime |
wcsftime |
format引數會組成一或多個的程式碼。 在printf,格式化代碼會加上百分比符號 (%)。不是以開頭的字元%會複製未變更到strDest*.*LC_TIME分類的目前地區設定會影響輸出格式設定的strftime。 (如需有關LC_TIME,請參閱 setlocale。) 函式_l尾碼使用目前設定地區設定。使用這些函式的版本_l尾碼都一樣,差異在於他們取得做為參數的地區設定,並使用,而不是目前設定地區設定。如需詳細資訊,請參閱 地區設定。
格式代碼strftime如下所示:
%a
縮寫的星期名稱%A
完整的星期名稱%b
縮寫的月份名稱%B
完整月份名稱%c
適合地區設定的日期和時間表示%d
為十進位的數字 (01 – 31) 個月的第幾天%H
24 小時制的小時 (00 – 23)%I
12 小時制 (01 – 12) 的小時%j
年份是十進位數字 (001-366) 的第幾天%m
月份,以十進位數字 (01 – 12)%M
為十進位的數字分 (00 – 59)%p
目前地區設定的 a.m./p.m.。適用於 12 小時制的指標%S
第二個以十進位數字 (00 – 59)%U
那一週年為十進位的數字,每週的第一天為星期日 (00 – 53)%w
非周末為十進位的數字 (0 – 6。 星期天是 0)%W
為十進位的數字,每週的第一天為星期一的年中的週 (00 – 53)%x
目前的地區設定的日期表示%X
目前的地區設定的時間表示法%y
不含世紀的十進位數字的年份 (00 – 99)%Y
含世紀,為十進位的數字的年份%z, %Z
在時間的區域名稱或時間區域的縮寫,完全取決於登錄設定。 如果區域不知道的任何字元%%
百分比符號
在printf函式, #旗標可能前置詞的任何格式設定的程式碼。 在此大小寫中,格式程式碼的意義會變更,如下所示。
格式化程式碼 |
意義 |
---|---|
%#a, %#A, %#b, %#B, %#p, %#X, %#z, %#Z, %#% |
#旗標都會被忽略。 |
%#c |
長日期和時間表示,適用於目前的地區設定。比方說: 「 星期二,年 3 月 14,1995 年 12: 41: 29"。 |
%#x |
完整日期表示,適用於目前的地區設定。比方說: 「 1995 年 3 月 14,星期二"。 |
%#d, %#H, %#I, %#j, %#m, %#M, %#S, %#U, %#w, %#W, %#y, %#Y |
(如果有的話),請移除前置字元零。 |
需求
常式 |
所需的標題 |
---|---|
strftime |
<time.h> |
wcsftime |
<time.h> 或者 <wchar.h> |
_strftime_l |
<time.h> |
_wcsftime_l |
<time.h> 或者 <wchar.h> |
其他的相容性資訊,請參閱相容性在簡介中。
範例
請參閱範例的時間。