strftime、wcsftime、_strftime_l、_wcsftime_lstrftime, wcsftime, _strftime_l, _wcsftime_l

時刻の文字列の書式を指定します。Format a time string.

構文Syntax

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
);

パラメーターParameters

strDeststrDest
出力する文字列。Output string.

maxsizemaxsize
文字数 (charまたはwchar_t) で計測された、 strdestバッファーのサイズ。Size of the strDest buffer, measured in characters (char or wchar_t).

formatformat
書式指定文字列。Format-control string.

timeptrtimeptr
tmデータ構造体。tm data structure.

localelocale
使用するロケール。The locale to use.

戻り値Return Value

strftimeは、 strdestに配置された文字数を返し、 wcsftimeは対応するワイド文字数を返します。strftime returns the number of characters placed in strDest and wcsftime returns the corresponding number of wide characters.

終端の null を含む合計文字数がmaxsizeを超える場合、 strftimewcsftimeはどちらも0を返し、 strdestの内容は不確定になります。If the total number of characters, including the terminating null, is more than maxsize, both strftime and wcsftime return 0 and the contents of strDest are indeterminate.

Strdestの文字数は、書式設定されたリテラル文字の数と、 書式設定コードによって書式設定される可能性がある任意の文字と等しくなります。The number of characters in strDest is equal to the number of literal characters in format as well as any characters that may be added to format via formatting codes. 文字列の終端の NULL は戻り値にはカウントされません。The terminating null of a string is not counted in the return value.

RemarksRemarks

Strftime関数とwcsftime関数は、指定された書式引数に従ってtimeptrtm時刻値を書式設定し、その結果をバッファー strdestに格納します。The strftime and wcsftime functions format the tm time value in timeptr according to the supplied format argument and store the result in the buffer strDest. 最大maxsize文字は文字列に配置されます。At most, maxsize characters are placed in the string. Timeptr構造体のフィールドの説明については、「 asctime」を参照してください。For a description of the fields in the timeptr structure, see asctime. wcsftimeは、 strftimeに相当するワイド文字です。その文字列ポインター引数は、ワイド文字列を指します。wcsftime is the wide-character equivalent of strftime; its string-pointer argument points to a wide-character string. それ以外では、これらの関数の動作は同じです。These functions behave identically otherwise.

この関数は、パラメーターを検証します。This function validates its parameters. Strdestformat、またはtimeptrが null ポインターの場合、またはtimeptrによってアドレス指定されたtmデータ構造が無効である場合 (たとえば、時刻または日付の範囲外の値が含まれている場合)、または書式指定文字列の場合は、に無効な書式指定コードが含まれています。「パラメーターの検証」で説明されているように、無効なパラメーターハンドラーが呼び出されます。If strDest, format, or timeptr is a null pointer, or if the tm data structure addressed by timeptr is invalid (for example, if it contains out of range values for the time or date), or if the format string contains an invalid formatting code, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、この関数は0を返し、 errnoEINVALに設定します。If execution is allowed to continue, the function returns 0 and sets errno to EINVAL.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tcsftime_tcsftime strftimestrftime strftimestrftime wcsftimewcsftime

Format引数は1つ以上のコードで構成されます。printfと同様に、書式設定コードの前にはパーセント記号 % () が付きます。The format argument consists of one or more codes; as in printf, the formatting codes are preceded by a percent sign (%). % 始まらない文字は、そのままstrdestにコピーされます。Characters that do not begin with % are copied unchanged to strDest. 現在のロケールのLC_TIMEカテゴリは、 strftimeの出力形式に影響します。The LC_TIME category of the current locale affects the output formatting of strftime. ( LC_TIMEの詳細については、「 setlocale」を参照してください)。Strftime関数とwcsftime関数は、現在設定されているロケールを使用します。(For more information on LC_TIME, see setlocale.) The strftime and wcsftime functions use the currently set locale. これらの関数の _strftime_lバージョンと _wcsftime_lバージョンは、ロケールをパラメーターとして受け取り、現在設定されているロケールの代わりにそれを使用する点を除いて同じです。The _strftime_l and _wcsftime_l versions of these functions are identical except that they take the locale as a parameter and use that instead of the currently set locale. 詳細については、「 Locale」を参照してください。For more information, see Locale.

Strftime関数は、次の書式設定コードをサポートしています。The strftime functions support these formatting codes:

コードCode 置換文字列Replacement string
% a%a ロケールの曜日の省略名Abbreviated weekday name in the locale
% A%A ロケールの完全な曜日名Full weekday name in the locale
% b%b ロケールの省略形の月名Abbreviated month name in the locale
% B%B ロケールの月の完全な名前Full month name in the locale
% c%c ロケールに合った日付と時刻の表記Date and time representation appropriate for locale
% C%C 100で除算され、10進数値として整数に切り捨てられた年 (00 − 99)The year divided by 100 and truncated to an integer, as a decimal number (00−99)
% d%d 10進数の月の通算日 (01-31)Day of month as a decimal number (01 - 31)
% D%D % M/% d/% yと同じです。Equivalent to %m/%d/%y
% e%e 1桁の数字の前にスペースがある場合の月の通算日 (1-31)Day of month as a decimal number (1 - 31), where single digits are preceded by a space
% F%F % Y-% m-% dと同じです。Equivalent to %Y-%m-%d
% g%g ISO 8601 週ベースの年の最後の2桁 (10 進数) (00-99)The last 2 digits of the ISO 8601 week-based year as a decimal number (00 - 99)
% G%G ISO 8601 週ベースの年 (10 進数)The ISO 8601 week-based year as a decimal number
% h%h 月の省略名 ( % bと等価)Abbreviated month name (equivalent to %b)
% H%H 24時間形式の時間 (00-23)Hour in 24-hour format (00 - 23)
% I%I 12時間形式の時間 (01-12)Hour in 12-hour format (01 - 12)
% j%j 10進数の年の通算日 (001-366)Day of the year as a decimal number (001 - 366)
% m%m 小数値としての月 (01-12)Month as a decimal number (01 - 12)
% M%M 10進数としての分数 (00-59)Minute as a decimal number (00 - 59)
% n%n 改行文字 ( \n)A newline character (\n)
% p%p ロケールの午前/P.M. 表示The locale's A.M./P.M. 12時間制のインジケーターindicator for 12-hour clock
% r%r ロケールの12時間制時刻The locale's 12-hour clock time
% R%R % H:%Mと同じです。Equivalent to %H:%M
% S%S 10進数としての秒 (00-59)Second as a decimal number (00 - 59)
% t%t 水平タブ文字 ( \t)A horizontal tab character (\t)
% T%T % H:%M:% S、ISO 8601 時刻形式と同じです。Equivalent to %H:%M:%S, the ISO 8601 time format
% u%u ISO 8601 の曜日 (10 進数) (1-7;月曜日は 1)ISO 8601 weekday as a decimal number (1 - 7; Monday is 1)
% U%U 年の通算週の数値 (00-53) (最初の日曜日は週1の最初の日)Week number of the year as a decimal number (00 - 53), where the first Sunday is the first day of week 1
% V%V ISO 8601 週番号 (10 進数) (00-53)ISO 8601 week number as a decimal number (00 - 53)
% w%w 小数値としての曜日 (0-6;日曜日は 0)Weekday as a decimal number (0 - 6; Sunday is 0)
% W%W 年の通算週の数値 (00-53)。最初の月曜日が週の最初の日です1Week number of the year as a decimal number (00 - 53), where the first Monday is the first day of week 1
% x%x ロケールの日付表現Date representation for the locale
% X%X ロケールの時刻表現Time representation for the locale
% y%y 世紀なし、10進数値 (00-99)Year without century, as decimal number (00 - 99)
% Y%Y 世紀を付けた 10 進数の年Year with century, as decimal number
% z%z ISO 8601 形式の UTC からのオフセット。タイムゾーンが不明の場合は文字なしThe offset from UTC in ISO 8601 format; no characters if time zone is unknown
% Z%Z レジストリ設定に応じて、ロケールのタイムゾーン名またはタイムゾーンの省略形。タイムゾーンが不明の場合は文字なしEither the locale's time-zone name or time zone abbreviation, depending on registry settings; no characters if time zone is unknown
%% パーセント記号Percent sign

Printf関数と同様に、フラグ # は任意の書式指定コードにプレフィックスを付けることができます。As in the printf function, the # flag may prefix any formatting code. その場合、書式コードの説明は次のように変更します。In that case, the meaning of the format code is changed as follows.

[書式コード]Format code 説明Meaning
% #a% #A% #b、% #B% #g% #G% #h% #n% #p、 % #t% #u% #w% #X% #z、% #Z、 %#%%#a, %#A, %#b, %#B, %#g, %#G, %#h, %#n, %#p, %#t, %#u, %#w, %#X, %#z, %#Z, %#% # フラグは無視されます。# flag is ignored.
%#c%#c ロケールに適した長い日付と時刻の表現。Long date and time representation, appropriate for the locale. 例えば:"火曜日、1995年3月14日、12:41:29"。For example: "Tuesday, March 14, 1995, 12:41:29".
% #x%#x ロケールに適した長い日付形式。Long date representation, appropriate to the locale. 例えば:"火曜日、1995年3月14日"。For example: "Tuesday, March 14, 1995".
% #d% #D% #e、% #F% #H% #I% #j% #m% #M、 % #r% #R% #S% #T% #U、% #V% #W% #y% #Y%#d, %#D, %#e, %#F, %#H, %#I, %#j, %#m, %#M, %#r, %#R, %#S, %#T, %#U, %#V, %#W, %#y, %#Y 先頭の0または空白を削除します (存在する場合)。Remove leading zeros or spaces (if any).

% V% g、および % gによって生成された ISO 8601 週と週ベースの年は、月曜日に開始する週を使用します。 week 1 は1月4日の週です。この週は、少なくとも4日を含む1週間です。The ISO 8601 week and week-based year produced by %V, %g, and %G, uses a week that begins on Monday, where week 1 is the week that contains January 4th, which is the first week that includes at least four days of the year. 年の最初の月曜日が2、3、または4の場合、前の日は前の年の最後の週の一部になります。If the first Monday of the year is the 2nd, 3rd, or 4th, the preceding days are part of the last week of the preceding year. その日、 % Vは53に置き換えられ、 % g% gの両方が前の年の数字に置き換えられます。For those days, %V is replaced by 53, and both %g and %G are replaced by the digits of the preceding year.

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
strftimestrftime <time.h><time.h>
wcsftimewcsftime <time.h> または <wchar.h><time.h> or <wchar.h>
_strftime_l_strftime_l <time.h><time.h>
_wcsftime_l_wcsftime_l <time.h> または <wchar.h><time.h> or <wchar.h>

_Strftime_l関数と _wcsftime_l関数は、Microsoft 固有の関数です。The _strftime_l and _wcsftime_l functions are Microsoft-specific. 互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.

Example

time の例を参照してください。See the example for time.

関連項目See also

ロケールLocale
時間管理Time Management
文字列操作String Manipulation
localeconvlocaleconv
setlocale、_wsetlocalesetlocale, _wsetlocale
strcoll 系関数strcoll Functions
strxfrm、wcsxfrm、_strxfrm_l、_wcsxfrm_lstrxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l