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 バッファーのサイズ。文字数 (charwchar_t) で測定されます。

format
書式指定文字列。

timeptr
tm データ構造。

locale
使用するロケール。

戻り値

strftimestrDest 内の文字数を返し、wcsftime は対応するワイド文字数を返します。

終端の NULL を含む文字数の合計が maxsize を超える場合、strftimewcsftime の両方が 0 を返し、strDest の内容は不確定です。

strDest 内の文字数は、format 内のリテラル文字数と、書式コードを使用して format に追加される可能性がある文字数に等しくなります。 文字列の終端の NULL は戻り値にはカウントされません。

解説

strftime 関数と wcsftime 関数は、指定された format 引数に基づいて timeptrtm 時刻値の書式を指定し、結果をバッファー strDest に格納します。 文字列には最大 maxsize 文字を含めることができます。 timeptr 構造のフィールドについては、「asctime」をご覧ください。 wcsftimestrftime のワイド文字版です。その文字列ポインター引数はワイド文字の文字列を指します。 それ以外では、これらの関数の動作は同じです。

この関数は、パラメーターを検証します。 strDestformat、または timeptr が null ポインターである場合、timeptr で指定された tm データ構造が無効である場合 (範囲外の時刻や日付の値が含まれるなど)、または format 文字列に無効な書式コードが含まれる場合は、「パラメーターの検証」に記載されているように無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、この関数は 0 を返し、errnoEINVAL に設定します。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 これを変更するには、「CRT でのグローバル状態」を参照してください。

汎用テキスト ルーチンのマップ

TCHAR.H ルーチン _UNICODE&_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_tcsftime strftime strftime wcsftime

format 引数は 1 つ以上のコードで構成されます。printf と同じように、書式コードの前にはパーセント記号 (%) を指定します。 先頭に % が指定されていない文字は、変更されずに strDest にコピーされます。 現在のロケールの LC_TIME カテゴリは、strftime の出力の書式に影響します。 (詳細については、.) をLC_TIME参照してくださいsetlocale。関数はstrftimewcsftime、現在設定されているロケールを使用します。 これらの関数の _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 日を含む週であり、これは年の少なくとも 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 固有の関数です。 互換性の詳細については、「互換性」を参照してください。

time の例を参照してください。

関連項目

ロケール
時間管理
文字列操作
localeconv
setlocale, _wsetlocale
strcoll 関数
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l