当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ wcsftime()用法及代码示例


C++ 中的wcsftime() 函数根据格式字符串将给定的日期和时间从给定的日历时间时间转换为以空字符结尾的宽字符串。

wcsftime() 函数在<cwchar> 头文件中定义。

wcsftime()原型

size_t wcsftime( wchar_t* str, size_t count, const wchar_t* format, const tm* time );

wcsftime() 函数采用 4 个参数:str , count , formattime

time 指向的日期和时间信息根据 format 的值转换为以空字符结尾的宽字符,并存储在 str 指向的宽数组中。最多写入count 个字节。

参数:

  • str:指向宽字符数组的第一个元素以存储结果的指针。
  • count:要写入的最大宽字符数。
  • format: 指向指定转换格式的以空字符结尾的宽字符串的指针。格式字符串由转换说明符(以 % 开头,可选地后跟 E 或 O)和其他普通宽字符组成。
    包括终止空宽字符在内的普通宽字符按原样复制到输出宽字符串。
    wcsftime() 的格式说明符
    转换说明符 说明 使用领域
    % 写入字符 %
    n 写入换行符
    t 写入水平制表符
    Year
    Y 写入 4 位年份,例如2011 tm_year
    EY 以语言环境的替代表示形式写入 4 位年份 tm_year
    y 写入年份的最后 2 位数字,范围 [00, 99] tm_year
    Oy 以语言环境的替代表示形式写入年份的最后 2 位数字 tm_year
    Ey 将年份写入区域设置的替代日历期间的偏移量 %EC (locale-dependent) tm_year
    C 写入年份的前 2 位数字,范围 [00,99] tm_year
    EC 在语言环境的替代表示中写入基准年(期间)的名称, tm_year
    G 写入 ISO 8601 基于周的年份,即包含指定周的年份。 tm_year、tm_wday、tm_yday
    g 写入基于 ISO 8601 周的年份的最后 2 位数字,即包含指定周的年份(范围 [00,99])。 tm_year、tm_wday、tm_yday
    Month
    b 写入缩写的月份名称,例如简 tm_mon
    h 与 b 相同 tm_mon
    B 写完整的月份名称,例如一月 tm_mon
    m 将月份写入十进制数,范围 [01,12] tm_mon
    Om 使用区域设置的替代数字系统写入月份 tm_mon
    Week
    U 将一年中的星期写为 00 到 53 之间的十进制数(星期日是一周的第一天) tm_year、tm_wday、tm_yday
    OU 使用替代数字系统按 %U 写入一年中的一周 tm_year、tm_wday、tm_yday
    W 将一年中的星期写为 00 到 53 之间的十进制数(星期一是一周的第一天) tm_year、tm_wday、tm_yday
    OW 使用替代数字系统按 %W 写入一年中的一周 tm_year、tm_wday、tm_yday
    V 写入一年中的 ISO 8601 周(范围 [01,53])。 tm_year、tm_wday、tm_yday
    OV 使用替代数字系统写入一年中的星期,如 %V tm_year、tm_wday、tm_yday
    年/月中的哪一天
    j 将一年中的某一天写为十进制数,范围 [001,366] tm_yday
    d 将月份中的日期写为十进制数,范围[01,31] tm_mday
    Od 使用替代数字系统写入月份中的某一天,如 %d tm_mday
    e 将月份中的日期写为十进制数,范围 [1,31] tm_mday
    Oe 使用替代数字系统写入月份中的某一天,如 %e tm_mday
    一周中的天
    a 写下工作日的缩写名称,例如周五(取决于地区) tm_wday
    A 写完整的工作日名称,例如星期五(取决于地区) tm_wday
    w 将工作日写为十进制数,范围 [0-6](星期日为 0) tm_wday
    Ow 使用替代数字系统将工作日写入 %w tm_wday
    u 将工作日写入十进制数,其中星期一为 1(ISO 8601 格式),范围 [1-7] tm_wday
    Ou 使用替代数字系统将工作日写入 %u tm_wday
    时、分、秒
    H 将小时写入十进制数,范围 [00,23] tm_hour
    OH 使用替代数字系统将小时写入 %H tm_hour
    I 将小时写入十进制数,范围[01,12] tm_hour
    OI 使用替代数字系统将小时写入 %I tm_hour
    M 将分钟写入十进制数,范围 [00,59] tm_min
    OM 按 %M 写入分钟,使用替代的数字系统 tm_min
    S 将秒写为十进制数,范围 [00,60] tm_sec
    OS 由 %S 写入第二个,使用替代的数字系统 tm_sec
    Other
    c 写入标准日期和时间字符串,例如2010 年 10 月 17 日星期日 04:41:13(取决于区域设置) all
    Ec 写入语言环境的替代日期和时间字符串 all
    x 写入本地化日期表示(取决于区域设置) all
    Ex 写入语言环境的替代日期表示 all
    X 写入本地化时间表示(取决于区域设置) all
    EX 写入语言环境的替代时间表示 all
    D 相当于"%m/%d/%y" tm_mon、tm_mday、tm_year
    F 相当于"%Y-%m-%d" tm_mon、tm_mday、tm_year
    r 写入本地化的 12 小时制时间 tm_hour、tm_min、tm_sec
    R 相当于"%H:%M" tm_hour, tm_min
    T 相当于“%H:%M:%S tm_hour、tm_min、tm_sec
    P 写入本地化的上午或下午(取决于地区) tm_hour
    z 以 ISO 8601 格式(例如 -0545)写入与 UTC 的偏移量,如果时区信息不可用,则不写入字符 tm_isdst
    Z 写入时区名称或缩写,如果时区信息不可用则不写入(取决于区域设置) tm_isdst
  • time :要转换的日期和时间信息。

返回:

  • 成功时,wcsftime() 函数返回写入到 str 指向的宽字符数组中的宽字符数,不包括终止的 L'\0'。
  • 如果在可以存储整个字符串之前达到计数,则返回 0 并且内容未定义。

示例:wcsftime() 函数如何工作?

#include <ctime>
#include <cwchar>
#include <iostream>
using namespace std;

int main()
{
	time_t curr_time;
	tm * curr_tm;
	wchar_t date_string[100];
	wchar_t time_string[100];
	
	time(&curr_time);
	curr_tm = localtime(&curr_time);
	
	wcsftime(date_string, 50, L"Today is %B %d, %Y", curr_tm);
	wcsftime(time_string, 50, L"Current time is %T", curr_tm);
	
	wcout << date_string << endl;
	wcout << time_string << endl;
	
	return 0;
}

运行程序时,输出将是:

Today is April 21, 2017
Current time is 14:42:45

相关用法


注:本文由纯净天空筛选整理自 C++ wcsftime()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。