wcsftime ()- 转换为格式化日期和时间

格式

     #include <wchar.h>
     size_t wcsftime(wchar_t *wdest, size_t maxsize,
                     const wchar_t *format, const struct tm *timeptr);

语言级别

ANSI

线程安全

语言环境敏感

如果在编译命令上指定了 LOCALETYPE (*LOCALE) ,那么此函数的行为可能会受到当前语言环境的 LC_CTYPE , LC_TIME 和 LC_TOD 类别的影响。 如果在编译命令上指定了 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALELEUTF) ,那么此函数的行为也可能受到当前语言环境的 LC_UNI_CTYPE , LC_UNI_TIME 和 LC_UNI_TOD 类别的影响。 当在编译命令上指定 LOCALETYPE (*CLD) 时,此功能不可用。 有关更多信息,请参阅 了解 CCSID 和语言环境

宽字符函数

有关更多信息,请参阅 宽字符

描述

wcsftime() 函数将 timeptr 结构中的时间和日期规范转换为宽字符字符串。 然后,它根据由格式指向的格式字符串将空结束的字符串存储在由 wdest 指向的数组中。 maxsize 值指定可以复制到数组中的最大宽字符数。 此函数等同于 strftime(),只是它使用宽字符。

wcsftime() 函数的工作方式与 strftime() 函数相同,只是它使用宽字符。 格式字符串是包含以下内容的宽字符字符串:
  • 转换规范字符。
  • 普通宽字符,复制到数组中不变。

此函数使用 timeptr指向的时间结构,如果说明符区分语言环境,那么它还将使用当前语言环境的 LC_TIME 类别来确定每个有效说明符的相应替换值。 通常通过调用 gmtime()localtime() 函数来获取 timeptr 所指向的时间结构。

返回值

如果生成的字符串 (包括结束的空宽字符) 中的宽字符总数不超过 maxsize,那么 wcsftime() 将返回放入 wdest的宽字符数 (不包括结束的空宽字符)。 否则, wcsftime() 函数将返回 0 ,并且数组的内容不确定。

如果发生转换错误,那么可以将 errno 设置为 ECONVERT

示例

此示例使用 localtime()获取日期和时间,使用 wcsftime()格式化信息,并打印日期和时间。
#include <stdio.h>
#include <time.h>
#include <wchar.h>
 
int main(void)
{
   struct tm *timeptr;
   wchar_t   dest[100];
   time_t    temp;
   size_t    rc;
 
   temp = time(NULL);
   timeptr = localtime(&temp);
   rc = wcsftime(dest, sizeof(dest), L" Today is %A,"
                 L" %b %d.\n Time: %I:%M %p", timeptr);
   printf("%d characters placed in string to make:\n\n%ls\n", rc, dest);
   return 0;
 
   /********************************************************************
      The output should be similar to:
 
      43 characters placed in string to make:
 
       Today is Thursday, Nov 10.
       Time: 04:56 PM
   ********************************************************************/
}

相关信息