|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <ctime> | ||
std::size_t strftime(char* str,std::size_t count,constchar* format,conststd::tm* tp); | ||
Converts the date and time information from a given calendar timetp to a null-terminated multibyte character stringstr according toformat stringformat. Up tocount bytes are written.
Contents |
| str | - | pointer to the first element of the char array for output |
| count | - | maximum number of bytes to write |
| format | - | pointer to a null-terminated multibyte character string specifying theformat of conversion |
| tp | - | pointer to the object containing date and time information to be converted |
The format string consists of zero or more conversion specifiers and ordinary characters (except%). All ordinary characters, including the terminating null character, are copied to the output string without modification. Each conversion specification begins with% character, optionally followed byE orO modifier (ignored if unsupported by the locale), followed by the character that determines the behavior of the specifier. The following format specifiers are available:
| Conversion specifier | Explanation | Used fields |
|---|---|---|
% | writes literal%. The full conversion specification must be%%. | |
n(C++11) | writes newline character | |
t(C++11) | writes horizontal tab character | |
| Year | ||
Y | writesyear as a decimal number, e.g. 2017 | tm_year |
EY(C++11) | writesyear in the alternative representation, e.g.平成23年 (year Heisei 23) instead of 2011年 (year 2011) in ja_JP locale | tm_year |
y | writes last 2 digits ofyear as a decimal number (range[00,99]) | tm_year |
Oy(C++11) | writes last 2 digits ofyear using the alternative numeric system, e.g. 十一 instead of 11 in ja_JP locale | tm_year |
Ey(C++11) | writesyear as offset from locale's alternative calendar period%EC (locale-dependent) | tm_year |
C(C++11) | writes first 2 digits ofyear as a decimal number (range[00,99]) | tm_year |
EC(C++11) | writes name of thebase year (period) in the locale's alternative representation, e.g. 平成 (Heisei era) in ja_JP | tm_year |
G(C++11) | writesISO 8601 week-based year, i.e. the year that contains the specified week. In ISO 8601 weeks begin with Monday and the first week of the year must satisfy the following requirements:
| tm_year,tm_wday,tm_yday |
g(C++11) | writes last 2 digits ofISO 8601 week-based year, i.e. the year that contains the specified week (range[00,99]).In ISO 8601 weeks begin with Monday and the first week of the year must satisfy the following requirements:
| tm_year,tm_wday,tm_yday |
| Month | ||
b | writesabbreviated month name, e.g.Oct (locale dependent) | tm_mon |
h(C++11) | synonym ofb | tm_mon |
B | writesfull month name, e.g.October (locale dependent) | tm_mon |
m | writesmonth as a decimal number (range[01,12]) | tm_mon |
Om(C++11) | writesmonth using the alternative numeric system, e.g. 十二 instead of 12 in ja_JP locale | tm_mon |
| Week | ||
U | writesweek of the year as a decimal number (Sunday is the first day of the week) (range[00,53]) | tm_year,tm_wday,tm_yday |
OU(C++11) | writesweek of the year, as by%U, using the alternative numeric system, e.g. 五十二 instead of 52 in ja_JP locale | tm_year,tm_wday,tm_yday |
W | writesweek of the year as a decimal number (Monday is the first day of the week) (range[00,53]) | tm_year,tm_wday,tm_yday |
OW(C++11) | writesweek of the year, as by%W, using the alternative numeric system, e.g. 五十二 instead of 52 in ja_JP locale | tm_year,tm_wday,tm_yday |
V(C++11) | writesISO 8601 week of the year (range[01,53]).In ISO 8601 weeks begin with Monday and the first week of the year must satisfy the following requirements:
| tm_year,tm_wday,tm_yday |
OV(C++11) | writesweek of the year, as by%V, using the alternative numeric system, e.g. 五十二 instead of 52 in ja_JP locale | tm_year,tm_wday,tm_yday |
| Day of the year/month | ||
j | writesday of the year as a decimal number (range[001,366]) | tm_yday |
d | writesday of the month as a decimal number (range[01,31]) | tm_mday |
Od(C++11) | writes zero-basedday of the month using the alternative numeric system, e.g. 二十七 instead of 27 in ja_JP locale Single character is preceded by a space. | tm_mday |
e(C++11) | writesday of the month as a decimal number (range[1,31]).Single digit is preceded by a space. | tm_mday |
Oe(C++11) | writes one-basedday of the month using the alternative numeric system, e.g. 二十七 instead of 27 in ja_JP locale Single character is preceded by a space. | tm_mday |
| Day of the week | ||
a | writesabbreviated weekday name, e.g.Fri (locale dependent) | tm_wday |
A | writesfull weekday name, e.g.Friday (locale dependent) | tm_wday |
w | writesweekday as a decimal number, where Sunday is0 (range[0-6]) | tm_wday |
Ow(C++11) | writesweekday, where Sunday is0, using the alternative numeric system, e.g. 二 instead of 2 in ja_JP locale | tm_wday |
u(C++11) | writesweekday as a decimal number, where Monday is1 (ISO 8601 format) (range[1-7]) | tm_wday |
Ou(C++11) | writesweekday, where Monday is1, using the alternative numeric system, e.g. 二 instead of 2 in ja_JP locale | tm_wday |
| Hour, minute, second | ||
H | writeshour as a decimal number, 24 hour clock (range[00-23]) | tm_hour |
OH(C++11) | writeshour from 24-hour clock using the alternative numeric system, e.g. 十八 instead of 18 in ja_JP locale | tm_hour |
I | writeshour as a decimal number, 12 hour clock (range[01,12]) | tm_hour |
OI(C++11) | writeshour from 12-hour clock using the alternative numeric system, e.g. 六 instead of 06 in ja_JP locale | tm_hour |
M | writesminute as a decimal number (range[00,59]) | tm_min |
OM(C++11) | writesminute using the alternative numeric system, e.g. 二十五 instead of 25 in ja_JP locale | tm_min |
S | writessecond as a decimal number (range[00,60]) | tm_sec |
OS(C++11) | writessecond using the alternative numeric system, e.g. 二十四 instead of 24 in ja_JP locale | tm_sec |
| Other | ||
c | writesstandard date and time string, e.g.Sun Oct 17 04:41:13 2010 (locale dependent) | all |
Ec(C++11) | writesalternative date and time string, e.g. using 平成23年 (year Heisei 23) instead of 2011年 (year 2011) in ja_JP locale | all |
x | writes localizeddate representation (locale dependent) | all |
Ex(C++11) | writesalternative date representation, e.g. using 平成23年 (year Heisei 23) instead of 2011年 (year 2011) in ja_JP locale | all |
X | writes localizedtime representation, e.g. 18:40:20 or 6:40:20 PM (locale dependent) | all |
EX(C++11) | writesalternative time representation (locale dependent) | all |
D(C++11) | equivalent to"%m/%d/%y" | tm_mon,tm_mday,tm_year |
F(C++11) | equivalent to"%Y-%m-%d" (the ISO 8601 date format) | tm_mon,tm_mday,tm_year |
r(C++11) | writes localized12-hour clock time (locale dependent) | tm_hour,tm_min,tm_sec |
R(C++11) | equivalent to"%H:%M" | tm_hour,tm_min |
T(C++11) | equivalent to"%H:%M:%S" (the ISO 8601 time format) | tm_hour,tm_min,tm_sec |
p | writes localizeda.m. or p.m. (locale dependent) | tm_hour |
z(C++11) | writesoffset from UTC in the ISO 8601 format (e.g.-0430), or no characters if the time zone information is not available | tm_isdst |
Z | writes locale-dependenttime zone name or abbreviation, or no characters if the time zone information is not available | tm_isdst |
The number of bytes written into the character array pointed to bystr not including the terminating'\0' on success. Ifcount was reached before the entire string could be stored,0 is returned and the contents are indeterminate.
#include <ctime>#include <iostream>#include <iterator>#include <locale> void utcExample(){// Example of the very popular RFC 3339 format UTC timestd::time_t time=std::time({});char timeString[std::size("yyyy-mm-ddThh:mm:ssZ")]; std::strftime(std::data(timeString),std::size(timeString),"%FT%TZ",std::gmtime(&time));std::cout<< timeString<<'\n';} int main(){std::time_t t=std::time(nullptr);char mbstr[100]; if(std::strftime(mbstr, sizeof(mbstr),"%A %c",std::localtime(&t)))std::cout<< mbstr<<'\n'; std::locale::global(std::locale("ja_JP.utf8"));if(std::strftime(mbstr, sizeof(mbstr),"%A %c",std::localtime(&t)))std::cout<< mbstr<<'\n'; utcExample();}
Possible output:
Tuesday Tue Sep 7 19:40:35 2021火曜日 2021年09月07日 19時40分35秒2021-09-07T19:40:35Z
| converts astd::tm object to a textual representation (function)[edit] | |
| converts astd::time_t object to a textual representation (function)[edit] | |
| converts astd::tm object to custom wide string textual representation (function)[edit] | |
(C++11) | formats and outputs a date/time value according to the specified format (function template)[edit] |
formatting support forhh_mm_ss(class template specialization)[edit] | |
C documentation forstrftime | |