次の方法で共有


strftimewcsftime_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を参照してください。 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 関数
strxfrmwcsxfrm_strxfrm_l_wcsxfrm_l