Home C&C++函数库 c++ 语法 程序源码 Linux C库

strftime

函数   <ctime>

size_t strftime (char* ptr, size_t maxsize, const char* format,
                 const struct tm* timeptr );


将时间格式化为字符串

将format的内容复制到ptr中,将其格式说明符展开为表示timeptr中描述的时间的相应值,并限制最大长度字符(maxsize)。

☲  参数


ptr
指向目标数组的指针,结果C字符串将复制到该数组中。

maxsize
复制到ptr的最大字符数,包括终止空字符。

format
C字符串,包含规则字符和特殊格式说明符的任意组合。函数将这些格式说明符替换为相应的值, 以表示timeptr中指定的时间。它们都以百分号(%)开头,分别是:
说明符 替换 例子
%a 缩写工作日的名字 * Thu
%A 完整的工作日的名字 * Thursday
%b 缩写月份的名字 * Aug
%B 月份的全名字 * August
%c 日期和时间表示 * Thu Aug 23 14:55:02 2001
%C 年除以100并截断为整数(00-99) 20
%d 月的某一天,填零(01-31) 23
%D MM/DD/YY短日期,相当于%m/%d/%y 08/23/01
%e 月的某一天,填空格( 1-31) 23
%F YYYY-MM-DD短日期,相当于%Y-%m-%d 2001-08-23
%g 以周为单位的年,最后两位数字(00-99) 01
%G 以周为单位的年 2001
%h 缩写月份名 *(与%b相同) Aug
%H 24小时制(00-23) 14
%I 12小时格式(01-12) 02
%j 一年中的某一天(001-366) 235
%m 十进制月份(01-12) 08
%M 分钟(00-59) 55
%n 换行符(“\ n”)
%p 上午或下午 pm
%r 12小时的时钟时间 * 02:55:02 pm
%R 24小时HH:MM时间,相当于%H:%M 14:55
%S 秒 (00-61) 02
%t 水平制表符(“\ t”)
%T ISO 8601时间格式(HH:MM:SS),相当于%H:%M:%S 14:55:02
%u ISO 8601工作日编号,星期一为1 (1-7) 4
%U 以第一周第一天为一周的周数(00-53) 33
%V ISO 8601周号(01-53) 34
%w 工作日为十进制数,星期日为0 (0-6) 4
%W 以第一个星期一为第一周第一天的周数(00-53) 34
%x 表示日期 * 08/23/01
%X 时间表示 * 14:55:02
%y 年份,后两位(00-99) 01
%Y 年份 2001
%z ISO 8601与UTC在时区的偏移(1分钟= 1,1小时=100)
如果无法确定时区,则没有字符
+100
%Z 时区名称或缩写 *
如果无法确定时区,则没有字符
CDT
%% 一个%号 %
*用星号(*)标记的说明符依赖于语言环境。

注意:绿色行表示C99引入的说明符和子说明符。
从C99开始,可以在百分比符号(%) 和说明符之间插入两个特定于区域设置的修饰符来请求另一种格式,如果适用的话:
修饰 含义 适用于
E 使用区域设置的替代表示 %Ec %EC %Ex %EX %Ey %EY
O 使用区域设置的可选数字符号 %Od %Oe %OH %OI %Om %OM %OS %Ou %OU %OV %Ow %OW %Oy


timeptr
指向tm结构的指针,该结构包含分解为组件的日历时间(参见struct tm)。

☉  返回值



一个指向tm结构的指针,其成员中填充了与timer的本地时间表示相对应的值。

返回值指向一个内部对象,该对象的有效性或值可能会被随后调用gmtimelocaltime所更改。

☣  示例



/* localtime example */
#include <stdio.h>      /* puts, printf */
#include <time.h>       /* time_t, struct tm, time, localtime */

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;

  time (&rawtime);
  timeinfo = localtime (&rawtime);
  printf ("Current local time and date: %s", asctime(timeinfo));

  return 0;
}

输出:
Current local time and date: Wed Feb 13 17:17:11 2013

↭  数据竞争



函数访问timer指向的对象。

该函数还访问和修改一个共享的内部对象, 这可能会在对gmtimelocaltime的并发调用中引入数据竞争。 一些库提供了避免这种数据竞争的替代函数:localtime_r (不可移植)。

❆  异常(c++)



无抛出保证:此函数从不抛出异常。

🍄  另请参阅



asctime 转换tm结构为字符串(function )
ctime 将time_t值转换为字符串(function)

联系我们 免责声明 关于CandCplus 网站地图