時刻の文字列の書式を指定します。
構文
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 や wchar_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 のワイド文字版です。その文字列ポインター引数はワイド文字の文字列を指します。 それ以外では、これらの関数の動作は同じです。
この関数は、パラメーターを検証します。
strDest、format、またはtimeptrが null ポインターである場合、またはtmによってアドレス指定されたtimeptrデータ構造が無効な場合 (たとえば、時刻または日付の範囲外の値が含まれている場合)、またはformat文字列に無効な書式設定コードが含まれている場合は、無効なパラメーター ハンドラー呼び出されます。パラメーターの検証。 実行の継続が許可された場合、この関数は 0 を返し、errno を EINVAL に設定します。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
汎用テキスト ルーチンのマップ
TCHAR.H ルーチン |
_UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
|---|---|---|---|
_tcsftime |
strftime |
strftime |
wcsftime |
format 引数は 1 つ以上のコードで構成されます。printf と同じように、書式コードの前にはパーセント記号 (%) を指定します。
%で始まらない文字は、変更されずにstrDestにコピーされます。 現在のロケールの LC_TIME カテゴリは、strftime の出力の書式に影響します。
LC_TIMEの詳細については、「setlocale」を参照してください。
strftime関数とwcsftime関数では、現在設定されているロケールが使用されます。 これらの関数の _strftime_l および _wcsftime_l バージョンは、現在設定されているロケールの代わりに、ロケールをパラメーターとして使用する点を除いて同じです。 詳細については、「 Locale」を参照してください。
strftime 関数は、次の書式設定コードをサポートしています。
| Code | 置換文字列 |
|---|---|
%a |
ロケールでの曜日の省略名 |
%A |
ロケールでの完全な曜日名 |
%b |
ロケールでの月の省略名 |
%B |
ロケールでの月の完全な名前 |
%c |
ロケールに合った日付と時刻の表記 |
%C |
100 で除算され、10 進数値として整数に切り捨てられた年 (00 − 99) |
%d |
10 進数の月の日付 (01 - 31) |
%D |
%m/%d/%y と同じ意味です。 |
%e |
1 桁の数字の前にスペースがある月の日付 (1 - 31) |
%F |
%Y-%m-%d と同じ意味です。 |
%g |
ISO 8601 の 10 進数としての週ベースの年の最後の 2 桁 (00 - 99) |
%G |
ISO 8601 の 10 進数としての週ベースの年 |
%h |
月の省略名 (%b と同じ) |
%H |
24 時間形式の時 (00 - 23) |
%I |
12 時間形式の時 (01 - 12) |
%j |
10 進数での年の通算日 (001 - 366) |
%m |
10 進数での月 (01 - 12) |
%M |
10 進数での分 (00 - 59) |
%n |
改行文字 (\n) |
%p |
ロケールでの 12 時間形式の午前/午後の標識 |
%r |
ロケールでの 12 時間制時刻 |
%R |
%H:%M と同じ意味です。 |
%S |
10 進数の秒 (00 - 59) |
%t |
水平タブ文字 (\t) |
%T |
%H:%M:%S と同じ、ISO 8601 の時刻形式 |
%u |
ISO 8601 の 10 進数での曜日 (1 - 7、月曜日は 1) |
%U |
10 進数での年の通算週 (00 - 53)、最初の日曜日が第 1 週の最初の日 |
%V |
ISO 8601 の 10 進数での週番号 (00 - 53) |
%w |
10 進数での曜日 (0 - 6、日曜日は 0) |
%W |
10 進数での年の通算週 (00 - 53)、最初の月曜日が第 1 週の最初の日 |
%x |
ロケールの日付表現 |
%X |
ロケールの時刻表現 |
%y |
10 進数の世紀なしの年 (00 - 99) |
%Y |
世紀を付けた 10 進数の年 |
%z |
ISO 8601 形式での UTC からのオフセット、タイム ゾーンが不明の場合は文字なし |
%Z |
レジストリ設定に応じて、ロケールのタイム ゾーンの名前またはタイム ゾーンの略称のいずれか。タイム ゾーンが不明の場合は文字なし |
%% |
パーセント記号 |
printf 関数と同じように、書式コードのプレフィックスとして # フラグを付けることができます。 その場合、書式コードの説明は次のように変更します。
| コードの書式設定 | 意味 |
|---|---|
%#a、 %#A、 %#b、 %#B、 %#g、 %#G、 %#h、 %#n、 %#p、 %#t、 %#u、 %#w、 %#X、 %#z、 %#Z、 %#% |
# フラグは無視されます。 |
%#c |
ロケールに合った、長い日付と時刻の表記。 たとえば、"Tuesday, March 14, 1995, 12:41:29" です。 |
%#x |
ロケールに適した、長い日付表記。 たとえば、"Tuesday, March 14, 1995" です。 |
%#d、 %#D、 %#e、 %#F、 %#H、 %#I、 %#j、 %#m、 %#M、 %#r、 %#R、 %#S、 %#T、 %#U、 %#V、 %#W、 %#y、 %#Y |
先頭の 0 または空白を削除します (ある場合)。 |
%V、%g、および%Gによって生成された ISO 8601 週および週ベースの年は、月曜日に始まる週を使用します。 第 1 週は、1 月の 4 日目を含む週であり、1 年の少なくとも 4 日間を含む最初の週です。 年の最初の月曜日が 2 日、3 日、または 4 日の場合、それより前の日は前の年の最後の週の一部になります。 それらの日については、%V は 53 に置き換えられ、%g と %G の両方が前の年の数字に置き換えられます。
Note
strftime から返された tm ポインターで gmtime 関数の 1 つを使用すると、%Z および %z 指定子によって出力される値は正確ではなくなります。 これは、C 標準で指定されている tm 構造体には、タイム ゾーン名とオフセットの情報が含まれていないためです。 代わりに、タイム ゾーン情報はグローバル変数 _timezone と _dstbias を使用して設定されます。
要件
| ルーチンによって返される値 | 必須ヘッダー |
|---|---|
strftime |
<time.h> |
wcsftime |
<time.h> または <wchar.h> |
_strftime_l |
<time.h> |
_wcsftime_l |
<time.h> または <wchar.h> |
_strftime_l と _wcsftime_l は、Microsoft 固有の関数です。 互換性の詳細については、「 Compatibility」を参照してください。
例
time の例を参照してください。
関連項目
ロケール
時間管理
文字列操作
localeconv
setlocale, _wsetlocale
strcoll
関数
strxfrm、 wcsxfrm、 _strxfrm_l、 _wcsxfrm_l