strftime, wcsftime, _strftime_l, _wcsftime_l
设置时间字符串。
size_t strftime(
char *strDest,
size_t maxsize,
const char *format,
const struct tm *timeptr
);
size_t _strftime_l(
char *strDest,
size_t maxsize,
const char *format,
const struct tm *timeptr,
_locale_t locale
);
size_t wcsftime(
wchar_t *strDest,
size_t maxsize,
const wchar_t *format,
const struct tm *timeptr
);
size_t _wcsftime_l(
wchar_t *strDest,
size_t maxsize,
const wchar_t *format,
const struct tm *timeptr,
_locale_t locale
);
参数
strDest
输出字符串。maxsize
strDest 缓冲区的大小,单位是字符 (char 或 wchart_t)。format
窗体控件字符串。timeptr
tm 数据结构。locale
使用的区域设置。
返回值
strftime 返回在 strDest 中的字符数,并 wcsftime 返回宽字符的对应。
如果字符的总数,包括终止 null,大于 maxsize, strftime 和 wcsftime 返回 0,并 strDest 内容是不确定的。
字符数。 strDest 的文本字符数相等在 format 的以及可添加到 format 通过设置格式的所有字符代码。字符串的终止 null 不对按返回值。
备注
strftime 和 wcsftime 功能根据所提供的 format 参数在缓冲区 strDest格式。 timeptr 的 tm 时间值并存储结果*。* 通常, maxsize 字符在字符串中。有关字段的说明在 timeptr 结构的,请参见 asctime。wcsftime 是 strftime宽字符等效;其字符串指针参数指向宽字符字符串。这些功能否则具有相同的行为。
说明 |
---|
在 Visual C++ 2005 版之前的版本,文档介绍了 wcsftime 的 format 参数作为都具有数据类型 const wchar_t *,但是, format 数据类型的实际实现是 const char *。更新 format数据类型的实现反映以前和当前文档,也就是说, const wchar_t *。 |
此功能验证其参数。如果 strDest、 format或timeptr 是 null 指针,或者,如果 timeptr 解决的 tm 数据结构无效 (例如,则为; 如果包含超出范围值为时间或日期),或者,如果 format 字符串包含无效格式代码,无效参数调用处理程序,如中所 参数验证述。如果执行允许继续,该函数返回 0 并将 errno 到 EINVAL。
一般文本例程映射
TCHAR.H 实例 |
未定义的 _UNICODE & _MBCS |
定义的 _MBCS |
定义的 _UNICODE |
---|---|---|---|
_tcsftime |
strftime |
strftime |
wcsftime |
format 参数包含一个或多个代码;在 printf,设置代码格式在百分号 (%) 之后。从 % 不开始字符将复制到未更改的 strDest*。* 当前区域设置的 LC_TIME 类别影响 strftime输出格式。(有关 LC_TIME的更多信息,请参见 setlocale。) 不 _l 后缀的函数使用当前设置的区域设置。这些功能的版本与 _l 后缀的相同,只不过它们将区域设置作为参数并使用该而不是当前设置的区域设置。有关更多信息,请参见 区域设置。
strftime 的格式如下代码列表:
%a
缩写的星期几名称%A
完整的星期几名称%b
缩写的月份名称%B
完整的月份名称%c
日期和时间表示相应的区域设置%d
日为十进制数字 (01 – 31) 的月份%H
小时数以 24 小时格式 (00 – 23)%I
小时数以 12 小时格式 (01 – 12)%j
日为十进制数字 (001 – 366) 的年份%m
为十进制数字 (01 – 12) 的月份%M
为十进制数字 (00 – 59) 的分钟%p
当前区域设置的 AM/P.M.12 小时制的指示器%S
接下来为十进制数字 (00 – 59)%U
周为十进制数字的年份,与 sunday 作为首先每周日期 (00 – 53)%w
为十进制数字 (0 – 6 的工作日;sunday 为 0)%W
周为十进制数字的年份,与 monday 作为首先每周日期 (00 – 53)%x
当前区域设置的日期表示%X
当前区域设置的时间表示%y
没有世纪的中,为十进制数字 (00 – 99)%Y
与世纪的中,为十进制数字%z, %Z
该时区的名称或时区缩写,根据注册表设置;不存在字符,如果时区未知%%
百分号
在 printf 功能, # 标志可以对所有设置代码格式前缀。在这种情况下,如下所示更改布局代码的含义。
格式代码 |
含义 |
---|---|
%#a, %#A, %#b, %#B, %#p, %#X, %#z, %#Z, %#% |
# 标志被忽略。 |
%#c |
长日期和时间表示,对于当前区域设置为。例如:“、, 1995 年三月 14 日, 12:41: 29"。 |
%#x |
长日期表示,适合到当前区域设置。例如:“、, 1995 年三月 14 日”。 |
%#d, %#H, %#I, %#j, %#m, %#M, %#S, %#U, %#w, %#W, %#y, %#Y |
移除前导零 (如果有)。 |
要求
实例 |
必需的头 |
---|---|
strftime |
<time.h> |
wcsftime |
<time.h> 或 <wchar.h> |
_strftime_l |
<time.h> |
_wcsftime_l |
<time.h> 或 <wchar.h> |
有关其他的兼容性信息,请参见中介绍的 兼容性 。
示例
为 时间参见示例。