在线文档教程
C++
应用 | Utilities

std::wcsftime

STD::wcsftime

Defined in header
std::size_t wcsftime( wchar_t* str, std::size_t count, const wchar_t* format, const std::tm* time

从给定日历时间转换日期和时间信息。time为空结尾的宽字符串。str按格式字符串format...直到...count字节被写入。

参数

str-pointer to the first element of the wchar_t array for output
count-maximum number of wide characters to write
format-pointer to a null-terminated wide 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 specifierExplanationUsed 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_ydayg

%28C++11%29写入最后2位数字8601周为基础的年份,即包含指定周%28范围的年份。[00,99]29%。在IS0中,8601周从星期一开始,一年中的第一周必须满足以下要求:

  • 包括1月4日

  • 包括一年中的第一个星期四

tm_year,,,tm_wday,,,tm_ydayb写字缩短月份名称,例如:Oct28%依赖于区域的%29tm_monh

%28C++11%29同义词btm_monB写字整月名称,例如:October28%依赖于区域的%29tm_monm写字作为十进制数%28的范围[01,12]%29tm_monOm

%28C++11%29写使用替代的数字系统,例如十二而不是JA中的12[医]JP地区tm_monU写字一年中的每周作为十进制数%28星期日是一周的第一天%29%28范围[00,53]%29tm_year,,,tm_wday,,,tm_ydayOU

%28C++11%29写一年中的每周,如%U,使用替代的数字系统,例如在ja中使用五十二而不是52[医]JP地区tm_year,,,tm_wday,,,tm_ydayW写字一年中的每周作为小数%28星期一是一周的第一天%29%28范围[00,53]%29tm_year,,,tm_wday,,,tm_ydayOW

%28C++11%29写一年中的每周,如%W,使用替代的数字系统,例如在ja中使用五十二而不是52[医]JP地区tm_year,,,tm_wday,,,tm_ydayV

%28C++11%29写一年中的8601周%28范围[01,53]29%。在IS0中,8601周从星期一开始,一年中的第一周必须满足以下要求:

  • 包括1月4日

  • 包括一年中的第一个星期四

tm_year,,,tm_wday,,,tm_ydayOV

%28C++11%29写一年中的每周,如%V,使用替代的数字系统,例如在ja中使用五十二而不是52[医]JP地区tm_year,,,tm_wday,,,tm_yday年度/月份的日期j写字一年中的一天作为十进制数%28的范围[001,366]%29tm_ydayd写字当月的一天作为十进制数%28的范围[01,31]%29tm_mdayOd

%28C++11%29写入基于零的当月的一天在ja中使用替代的数字系统,例如二十七而不是23[医]jp区域设置单个字符前面有一个空格。

tm_mdaye

%28C++11%29写当月的一天作为十进制数%28的范围[1,31]29%。单数前面有一个空格。

tm_mdayOe

%28C++11%29只写一个当月的一天使用替代的数字系统,例如在ja中使用二十七而不是27[医]jp区域设置单个字符前面有一个空格。

tm_mday一周中的一天a写字缩短工作日名称,例如:Fri28%依赖于区域的%29tm_wdayA写字全日工作日名称,例如:Friday28%依赖于区域的%29tm_wdayw写字平日作为十进制数,星期日是0%28范围[0-6]%29tm_wdayOw

%28C++11%29写平日,星期日在哪里0,使用替代的数字系统,例如在ja中使用二而不是2[医]JP地区tm_wdayu

%28C++11%29写平日作为十进制数,星期一是1%28 ISO 8601格式%29%28范围[1-7]%29tm_wdayOu

%28C++11%29写平日,星期一在哪里1,使用替代的数字系统,例如在ja中使用二而不是2[医]JP地区tm_wday小时,分钟,秒H写字小时作为十进制数,24小时时钟%28范围[00-23]%29tm_hourOH

%28C++11%29写小时从24小时时钟开始使用替代的数字系统,例如十八而不是ja中的18[医]JP地区tm_hourI写字小时作为十进制数,12小时时钟%28范围[01,12]%29tm_hourOI

%28C++11%29写小时从12小时时钟开始,使用替代的数字系统,例如,在ja中使用六而不是06。[医]JP地区tm_hourM写字分分钟作为十进制数%28的范围[00,59]%29tm_minOM

%28C++11%29写分分钟使用替代的数字系统,例如二十五而不是JA中的25[医]JP地区tm_minS写字第二作为十进制数%28的范围[00,60]%29tm_secOS

%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_yearF

%28C++11%29相当于“%Y-%m-%d”%28 iso 8601日期格式%29tm_mon,,,tm_mday,,,tm_yearr

%28C++11%29写本地化12小时钟时间%28地区依赖于%29tm_hour,,,tm_min,,,tm_secR

%28C++11%29相当于“%H:%M”tm_hour,,,tm_minT

%28C++11%29相当于“%H:%M:%S”%28 iso 8601时间格式%29tm_hour,,,tm_min,,,tm_secp写本地化上午或下午。28%依赖于区域的%29tm_hourz

%28C++11%29写从世界协调时抵消在iso 8601格式中%28例如。-0430%29,如果时区信息不可用,则为空字符tm_isdstZ写字时区名称或缩写,如果时区信息不可用,则为%28依赖于%29。tm_isdst指向要转换的日期和时间信息的时间指针。

返回值

所指向的宽字符数组中写入的宽字符数str不包括终止L'\0'关于成功。如果count在存储整个字符串之前到达,​0​返回,并且内容未定义。

二次

#include <ctime> #include <cwchar> #include <iostream> #include <locale> int main() { std::locale::global(std::locale("ja_JP.utf8") std::time_t t = std::time(NULL wchar_t wstr[100]; if(std::wcsftime(wstr, 100, L"%A %c", std::localtime(&t))) { std::wcout << wstr << '\n'; } }

二次

产出:

二次

火曜日 2011年12月27日 17時43分13秒

二次

另见

strftimeconverts a tm object to custom textual representation (function)
put_time (C++11)formats and outputs a date/time value according to the specified format (function template)

c wcsftime文件

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/crono/c/wcsftime