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
や wchar_t
) で測定されます。
format
書式指定文字列。
timeptr
tm
データ構造。
locale
使用するロケール。
戻り値
strftime
は strDest
内の文字数を返し、wcsftime
は対応するワイド文字数を返します。
終端の NULL を含む文字数の合計が maxsize
を超える場合、strftime
と wcsftime
の両方が 0 を返し、strDest
の内容は不確定です。
strDest
の文字数は、format
内のリテラル文字の数に加えて、書式設定コードを使用してformat
に追加できる任意の文字と同じです。 文字列の終端の null は、戻り値にはカウントされません。
解説
strftime
関数とwcsftime
関数は、指定されたformat
引数に従ってtimeptr
のtm
時間値を書式設定し、結果をバッファー strDest
に格納します。 文字列には最大 maxsize
文字を含めることができます。 timeptr
構造のフィールドについては、「asctime
」をご覧ください。 wcsftime
は strftime
のワイド文字版です。その文字列ポインター引数はワイド文字の文字列を指します。 それ以外では、これらの関数の動作は同じです。
この関数は、パラメーターを検証します。 strDest
、format
、またはtimeptr
が null ポインターである場合、またはtimeptr
によってアドレス指定されたtm
データ構造が無効な場合 (たとえば、時刻または日付の範囲外の値が含まれている場合)、または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
関数は、次の書式設定コードをサポートしています。
コード | 置換文字列 |
---|---|
%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
gmtime
から返された tm
ポインターで strftime
関数の 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