std::strftime
STD::暂停时间
Defined in header | | |
---|---|---|
std::size_t strftime( char* str, std::size_t count, const char* format, const std::tm* time | | |
从给定日历时间转换日期和时间信息。time
为以空结尾的多字节字符串。str
按格式字符串format
...直到...count
字节被写入。
参数
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 the format of conversion. 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 by E or O 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 writes year as a decimal number, e.g. 2017 tm_year EY(C++11) writes year 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 of year as a decimal number (range 00,99) tm_year Oy(C++11) writes last 2 digits of year using the alternative numeric system, e.g. 十一 instead of 11 in ja_JP locale tm_year Ey(C++11) writes year as offset from locale's alternative calendar period %EC (locale-dependent) tm_year C(C++11) writes first 2 digits of year as a decimal number (range 00,99) tm_year EC(C++11) writes name of the base year (period) in the locale's alternative representation, e.g. 平成 (Heisei era) in ja_JP tm_year G(C++11) writes ISO 8601 week-based year, i.e. the year that contains the specified week. In IS0 8601 weeks begin with Monday and the first week of the year must satisfy the following requirements: Includes January 4 Includes first Thursday of the year tm_year, tm_wday, tm_yday g(C++11) writes last 2 digits of ISO 8601 week-based year, i.e. the year that contains the specified week (range 00,99). In IS0 8601 weeks begin with Monday and the first week of the year must satisfy the following requirements: Includes January 4 Includes first Thursday of the year tm_year, tm_wday, tm_yday Month b writes abbreviated month name, e.g. Oct (locale dependent) tm_mon h(C++11) synonym of b tm_mon B writes full month name, e.g. October (locale dependent) tm_mon m writes month as a decimal number (range 01,12) tm_mon Om(C++11) writes month using the alternative numeric system, e.g. 十二 instead of 12 in ja_JP locale tm_mon Week U writes week 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) writes week 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 writes week 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) writes week 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) writes ISO 8601 week of the year (range 01,53). In IS0 8601 weeks begin with Monday and the first week of the year must satisfy the following requirements: Includes January 4 Includes first Thursday of the year tm_year, tm_wday, tm_yday OV(C++11) writes week 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 writes day of the year as a decimal number (range 001,366) tm_yday d writes day of the month as a decimal number (range 01,31) tm_mday Od(C++11) writes zero-based day of the month using the alternative numeric system, e.g 二十七 instead of 23 in ja_JP locale Single character is preceded by a space. tm_mday e(C++11) writes day of the month as a decimal number (range 1,31). Single digit is preceded by a space. tm_mday Oe(C++11) writes one-based day 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 writes abbreviated weekday name, e.g. Fri (locale dependent) tm_wday A writes full weekday name, e.g. Friday (locale dependent) tm_wday w writes weekday as a decimal number, where Sunday is 0 (range 0-6) tm_wday Ow(C++11) writes weekday, where Sunday is 0, using the alternative numeric system, e.g. 二 instead of 2 in ja_JP locale tm_wday u(C++11) writes weekday as a decimal number, where Monday is 1 (ISO 8601 format) (range 1-7) tm_wday Ou(C++11) writes weekday, where Monday is 1, using the alternative numeric system, e.g. 二 instead of 2 in ja_JP locale tm_wday Hour, minute, second H writes hour as a decimal number, 24 hour clock (range 00-23) tm_hour OH(C++11) writes hour from 24-hour clock using the alternative numeric system, e.g. 十八 instead of 18 in ja_JP locale tm_hour I writes hour as a decimal number, 12 hour clock (range 01,12) tm_hour OI(C++11) writes hour from 12-hour clock using the alternative numeric system, e.g. 六 instead of 06 in ja_JP locale tm_hour M writes minute as a decimal number (range 00,59) tm_min OM(C++11) writes minute using the alternative numeric system, e.g. 二十五 instead of 25 in ja_JP locale tm_min S writes second as a decimal number (range 00,60) tm_sec OS(C++11) writes second using the alternative numeric system, e.g. 二十四 instead of 24 in ja_JP locale tm_sec Other c writes standard date and time string, e.g. Sun Oct 17 04:41:13 2010 (locale dependent) all Ec(C++11) writes alternative date and time string, e.g. using 平成23年 (year Heisei 23) instead of 2011年 (year 2011) in ja_JP locale all x writes localized date representation (locale dependent) all Ex(C++11) writes alternative date representation, e.g. using 平成23年 (year Heisei 23) instead of 2011年 (year 2011) in ja_JP locale all X writes localized time representation (locale dependent) all EX(C++11) writes alternative 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 localized 12-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 localized a.m. or p.m. (locale dependent) tm_hour z(C++11) writes offset 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 time zone name or abbreviation, or no characters if the time zone information is not available (locale dependent) tm_isdst |
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 | |
年
y将年份写成十进制数,例如2017 tm[医]年
EY%28C++11%29在替代表示中写入年份,例如平成23年%28 Heisei 23%29,而在ja中为2011年%28a 2011%29[医]JP地区tm[医]年
Y将年的最后2位数字写为十进制数%28范围0099%29 tm[医]年
Oy%28C++11%29使用替代的数字系统写入年的最后2位数字,例如十一而不是ja中的11位[医]JP地区tm[医]年
EY%28C++11%29写入年份,从地区%27s替代日历周期%EC%28地区相关%29 tm抵消[医]年
C%28C++11%29将年份的前2位数字写为十进制数%28范围0099%29 tm[医]年
EC%28C++11%29在地区%27s替代表示中写入基准年%28周期%29的名称,例如平成%28 Heisei era%29在ja[医]JP tm[医]年
G%28C++11%29写入ISO 8601基于周的年份,即包含指定周的年份。在IS0中,8601周从星期一开始,一年中的第一周必须满足以下要求:包括1月4日,包括年的第一个星期四。[医]年份,tm[医]WDAY,tm[医]日
G%28C++11%29写入iso 8601周基础年的最后2位数,即包含指定周%28范围的年份。009929%。在IS0中,8601周从星期一开始,一年中的第一周必须满足以下要求:包括1月4日,包括年的第一个星期四。[医]年份,tm[医]WDAY,tm[医]日
月
B写缩写的月份名称,例如oct%28依赖于%29 tm[医]蒙
h%28C++11%29[医]蒙
B写完整的月份名称,例如10月%28依赖于%29 tm[医]蒙
M将月份写入小数%28范围01,12%29 tm[医]蒙
OM%28C++11%29使用替代数字系统编写月份,例如十二而不是JA中的12[医]JP地区tm[医]蒙
周
你把一年中的每周写成十进制数%28星期日是一周的第一天%29%28范围0053%29 tm[医]年份,tm[医]WDAY,tm[医]日
Ou%28C++11%29使用替代的数字系统(例如五十二而不是ja中的52),以%U的形式写一年中的每周[医]JP地区tm[医]年份,tm[医]WDAY,tm[医]日
W将一年中的每周写成十进制数%28星期一是一周的第一天%29%28范围0053%29 tm[医]年份,tm[医]WDAY,tm[医]日
现在,%28C++11%29使用替代的数字系统(例如五十二而不是JA中的52),以%W的方式写一年中的每周一周。[医]JP地区tm[医]年份,tm[医]WDAY,tm[医]日
v%28C++11%29写入ISO 8601周01,5329%。在IS0中,8601周从星期一开始,一年中的第一周必须满足以下要求:包括1月4日,包括年的第一个星期四。[医]年份,tm[医]WDAY,tm[医]日
Ov%28C++11%29使用替代的数字系统(例如五十二而不是JA中的52)来编写一年中的周数,如%V[医]JP地区tm[医]年份,tm[医]WDAY,tm[医]日
年度/月份的日期
J将一年中的一天写为十进制数%28范围001366%29 tm[医]日
D将月份中的一天写为十进制数%28范围01,31%29 tm[医]马日
OD%28C++11%29使用可选的数字系统(例如二十七而不是ja中的23)写一个月的零日。[医]jp区域设置单个字符前面有一个空格。TM[医]马日
E%28C++11%29写入月份中的小数%28范围一千三十一29%。单数前面有一个空格。TM[医]马日
OE%28C++11%29使用替代的数字系统编写一个月中的一天,例如二十七而不是ja中的27。[医]jp区域设置单个字符前面有一个空格。TM[医]马日
一周中的一天
A写入缩短的工作日名称,例如Fri%28 locale依赖于%29 tm。[医]WDAY
A写入整个工作日名称,例如周五%28依赖于%29 tm。[医]WDAY
W将工作日写成十进制数,其中星期日为0%28范围。0-6%29 tm[医]WDAY
现在%28C++11%29在工作日使用替代的数字系统(例如二而不是ja中的2),周日为0。[医]JP地区tm[医]WDAY
U%28C++11%29在工作日以小数形式写入,其中星期一为1%28ISO 8601格式%29%28范围1-7%29 tm[医]WDAY
Ou%28C++11%29在工作日,星期一为1,使用可选的数字系统,例如二而不是ja中的2[医]JP地区tm[医]WDAY
小时,分钟,秒
h将小时写为十进制数,24小时时钟%28范围00-23%29 tm[医]小时
噢,%28C++11%29使用替代的数字系统从24小时时钟写入一个小时,例如十八而不是ja中的18。[医]JP地区tm[医]小时
我写小时为十进制数,12小时时钟%28范围01,12%29 tm[医]小时
Oi%28C++11%29使用替代的数字系统从12小时时钟写入小时,例如在ja中使用六而不是06。[医]JP地区tm[医]小时
M将分钟写成十进制数%28范围0059%29 tm[医]敏
OM%28C++11%29使用替代数字系统写入分钟,例如二十五而不是JA中的25[医]JP地区tm[医]敏
s作为十进制数%28范围写入第二位0060%29 tm[医]证交会
OS%28C++11%29使用替代的数字系统编写第二次,例如二十四而不是ja中的24[医]JP地区tm[医]证交会
其他
c写入标准日期和时间字符串,例如太阳10月17日上午04:41:13 2010%28 locale依赖%29 All
EC%28C++11%29写入替代日期和时间字符串,例如在ja中使用平成23年%28a Heisei 23%29而不是2011年%28a 2011%29[医]JP地区所有
写入本地化日期表示%28依赖于%29 ALL
EX%28C++11%29编写替代日期表示,例如在ja中使用平成23年%28a Heisei 23%29而不是2011年%28a 2011%29[医]JP地区所有
写入本地化时间表示%28区域依赖于%29 ALL
EX%28C++11%29写入替代时间表示%28地区依赖于%29 ALL
D%28C++11%29等于“%m/%d/%y”tm[医]星期一,tm[医]mday,tm[医]年
F%28C++11%29等效于“%Y-%m-%d”%28 iso 8601日期格式%29 tm[医]星期一,tm[医]mday,tm[医]年
r%28C++11%29写入本地化的12小时时钟时间%28地区依赖于%29 tm[医]小时,小时[医]min,tm[医]证交会
R%28C++11%29,相当于“%H:%M”tm[医]小时,小时[医]敏
T%28C++11%29相当于“%H:%M:%S”%28 ISO 8601时间格式%29 tm[医]小时,小时[医]min,tm[医]证交会
p写入本地化的上午或下午%28依赖于%29 tm[医]小时
Z%28C++11%29在ISO 8601格式中写入来自UTC的偏移量%28e.g。-0430%29,如果时区信息不可用,则为空字符。[医]isdst
如果时区信息不可用,则写入时区名称或缩写,或不写入字符。[医]isdst
指向要转换的日期和时间信息的时间指针。
- 包括1月4日
- 包括一年中的第一个星期四
tm_year
,,,tm_wday
,,,tm_yday
g
%28C++11%29写入最后2位数字8601周为基础的年份
,即包含指定周%28范围的年份。[00,99]
29%。在IS0中,8601周从星期一开始,一年中的第一周必须满足以下要求:
- 包括1月4日
- 包括一年中的第一个星期四
tm_year
,,,tm_wday
,,,tm_yday
月b
写字缩短月份
名称,例如:Oct
28%依赖于区域的%29tm_mon
h
%28C++11%29同义词b
tm_mon
B
写字整月
名称,例如:October
28%依赖于区域的%29tm_mon
m
写字月
作为十进制数%28的范围[01,12]
%29tm_mon
Om
%28C++11%29写月
使用替代的数字系统,例如十二而不是JA中的12[医]JP地区tm_mon
周U
写字一年中的每周
作为十进制数%28星期日是一周的第一天%29%28范围[00,53]
%29tm_year
,,,tm_wday
,,,tm_yday
OU
%28C++11%29写一年中的每周
,如%U
,使用替代的数字系统,例如在ja中使用五十二而不是52[医]JP地区tm_year
,,,tm_wday
,,,tm_yday
W
写字一年中的每周
作为小数%28星期一是一周的第一天%29%28范围[00,53]
%29tm_year
,,,tm_wday
,,,tm_yday
OW
%28C++11%29写一年中的每周
,如%W
,使用替代的数字系统,例如在ja中使用五十二而不是52[医]JP地区tm_year
,,,tm_wday
,,,tm_yday
V
%28C++11%29写一年中的8601周
%28范围[01,53]
29%。在IS0中,8601周从星期一开始,一年中的第一周必须满足以下要求:
- 包括1月4日
- 包括一年中的第一个星期四
tm_year
,,,tm_wday
,,,tm_yday
OV
%28C++11%29写一年中的每周
,如%V
,使用替代的数字系统,例如在j
a中使用五十二而不是52[医]JP地区tm_year
,,,tm_wday
,,,tm_yday
年度/月份的日期j
写字一年中的一天
作为十进制数%28的范围[001,366]
%29tm_yday
d
写字当月的一天
作为十进制数%28的范围[01,31]
%29tm_mday
Od
%28C++11%29写入基于零的当月的一天
在ja中使用替代的数字系统,例如二十七而不是23[医]jp区域设置单个字符前面有一个空格。
tm_mday
e
%28C++11%29写当月的一天
作为十进制数%28的范围[1,31]
29%。单数前面有一个空格。
tm_mday
Oe
%28C++11%29只写一个当月的一天
使用替代的数字系统,例如在ja中使用二十七而不是27[医]jp区域设置单个字符前面有一个空格。
tm_mday
一周中的一天a
写字缩短工作日
名称,例如:Fri
28%依赖于区域的%29tm_wday
A
写字全日工作日
名称,例如:Friday
28%依赖于区域的%29tm_wday
w
写字平日
作为十进制数,星期日是0
%28范围[0-6]
%29tm_wday
Ow
%28C++11%29写平日
,星期日在哪里0
,使用替代的数字系统,例如在ja中使用二而不是2[医]JP地区tm_wday
u
%28C++1
1
%29写平日
作为十进制数,星期一是1
%28 ISO 8601
格式%29%28范围[1-7]
%29tm_wday
Ou
%28C++1
1
%29写平日
,星期一在哪里1
,使用替代的数字系统,例如在ja中使用二而不是2[医]JP地区tm_wday
小时
,分钟,秒H
写字小时
作为十进制数,24小时
时钟%28范围[00-23]
%29tm_hour
OH
%28C++11%29写小时
从24小时
时钟开始使用替代的数字系统,例如十八而不是ja中的18[医]JP地区tm_hour
I
写字小时
作为十进制数,12小时
时钟%28范围[01,12]
%29tm_hour
OI
%28C++11%29写小时
从12小时
时钟开始,使用替代的数字系统,例如,在ja中使用六而不是06。[医]JP地区tm_hour
M
写字分分钟
作为十进制数%28的范围[00,59]
%29tm_min
OM
%28C++11%29写分分钟
使用替代的数字系统,例如二十五而不是JA中的25[医]JP地区tm_min
S
写字第二
作为十进制数%28的范围[00,60]
%29tm_sec
OS
%28C++11%29写第二
使用替代的数字系统,例如在ja中使用二十四而不是24[医]JP地区tm_sec
其他c
写字标准日期和时间字符串
,G.Sun Oct 17 04:41:13 2010
%28地区依赖于%29 ALLEc
%28C++11%29写可选日期和时间字符串
,例如在日本使用平成23年%28a Heisei 23%29而不是2011年%28a 2011%29。[医]JP地区所有x
写本地化日期表示
%28地区依赖于%29 ALLEx
%28C++11%29写替代日期表示
,例如在日本使用平成23年%28a Heisei 23%29而不是2011年%28a 2011%29。[医]JP地区所有X
写本地化时间表示
%28地区依赖于%29 ALLEX
%28C++11%29写替代时间表示
%28地区依赖于%29 ALLD
%28C++11%29相当于“%m/%d/%y”
tm_mon
,,,tm_mday
,,,tm_year
F
%28C++11%29相当于“%Y-%m-%d”
%28 iso 8601日期格式%29tm_mon
,,,tm_mday
,,,tm_year
r
%28C++11%29写本地化12小时钟
时间%28地区依赖于%29tm_hour
,,,tm_min
,,,tm_sec
R
%28C++11%29相当于“%H:%M”
tm_hour
,,,tm_min
T
%28C++11%29相当于“%H:%M:%S”
%28 iso 8601时间格式%29tm_hour
,,,tm_min
,,,tm_sec
p
写本地化上午或下午。
28%依赖于区域的%29tm_hour
z
%28C++11%29写从世界协调时抵消
在iso 8601格式中%28例如。-0430
%29,如果时区信息不可用,则为空字符tm_isdst
Z
写字时区名称或缩写
,如果时区信息不可用,则为%28依赖于%29。tm_isdst
指向要转换的日期和时间信息的时间指针。
返回值
指向的字符数组中写入的字节数。str
不包括终止'\0'
关于成功。如果count
在存储整个字符串之前到达,0
返回,并且内容未定义。
例
二次
#include <ctime>
#include <iostream>
#include <locale>
int main()
{
std::locale::global(std::locale("ja_JP.utf8")
std::time_t t = std::time(NULL
char mbstr[100];
if (std::strftime(mbstr, sizeof(mbstr), "%A %c", std::localtime(&t))) {
std::cout << mbstr << '\n';
}
}
二次
产出:
二次
火曜日 2011年12月27日 17時39分03秒
二次
另见
asctime | converts a tm object to a textual representation (function) |
---|---|
ctime | converts a time_t object to a textual representation (function) |
wcsftime | converts a tm object to custom wide string textual representation (function) |
put_time (C++11) | formats and outputs a date/time value according to the specified format (function template) |
c文件为strftime
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。