C 库 - wcsftime() 函数

C 库 wcsftime() 函数将日期和时间信息按照指定格式转换为宽字符串。打印日期时,会使用 wprintf() 函数。该函数用于格式化宽字符输出。它允许用户将一系列宽字符和数值作为标准输出打印。

语法

以下是 C 库 wcsftime() 函数的语法 -

wcsftime(buffer, int_value, L"The current Date: %A, %F %I:%M %p", timeinfo);
and
wprintf(L"%ls", buffer);

参数

此函数接受以下参数 -

1. buffer:指向宽字符数组第一个元素的指针,输出将存储在该数组中。

2. int_value:要写入的最大宽字符数(缓冲区的大小)。

3.格式:指向以空字符结尾的宽字符串的指针,用于指定转换格式。以下是日期和时间格式中常用的转换说明符列表:

  • %A:星期几的完整名称(例如,"星期日/星期一/星期二等")。
  • %F:格式为"YYYY-MM-DD"的完整日期(例如,"2024-05-22")。
  • %H:小时(24 小时制),以十进制数表示(例如,"19")。
  • %M:分钟,以十进制数表示(例如,"30")。
  • %I:%M %p:小时(12 小时制)和分钟,后跟 AM/PM 指示符。
  • %S:以十进制数表示的秒数(例如,"45")。

4. timeinfo:指向包含本地时间信息的结构体 tm 的指针。

返回类型

程序执行过程中,该函数返回复制到字符串的宽字符总数,不包括终止的空宽字符。如果输出超出最大大小,则函数返回零。

示例 1

以下是一个基本的 C 库程序,使用 wcsftime() 函数以自定义格式显示当前日期和时间。

#include <stdio.h>
#include <wchar.h>
#include <time.h>

int main() {
   time_t demotime;
   struct tm* timeinfo;
   wchar_t buffer[80];

   time(&demotime);
   timeinfo = localtime(&demotime);
   
   // 自定义时间格式
   wcsftime(buffer, 80, L"The current Date: %A, %F %I:%M %p", timeinfo);
   wprintf(L"%ls", buffer);

   return 0;
}

输出

执行上述代码后,我们得到以下输出 -

The current Date: Wednesday, 2024-05-22 01:38 PM

示例 2

以下示例使用 various 函数以 24 小时制格式设置本地时间。

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
#include <time.h>

int main() {
    time_t rawtime;
    struct tm* timeinfo;
    wchar_t buffer[80];
    
    time(&rawtime);
    timeinfo = localtime(&rawtime);
    
    // 设置语言环境类别
    setlocale(LC_ALL, "ja_JP.utf8");
    
    // 自定义格式为 24 小时制
    wcsftime(buffer, 80, L": %A%F %H:%M", timeinfo);
    
    // 显示结果
    wprintf(L"%ls", buffer);
    return 0;
}

输出

执行代码后,我们得到以下输出 -

?????: Wednesday?2024-05-22 13:42

示例 3

要获取今天的日期,wcsftime() 格式设置转换说明符的自定义设置并显示结果。

#include <stdio.h>
#include <time.h>
#include <wchar.h>

int main(void) {
   struct tm* timeinfo;
   wchar_t dest[100];
   time_t temp;
   size_t r;

   temp = time(NULL);
   timeinfo = localtime(&temp);
   r = wcsftime(dest, sizeof(dest), L" Today is %A, %b %d.
 Time: %I:%M %p", timeinfo);

   printf("%zu is the placed characters in the string:

%ls", r, dest);
   return 0;
}

输出

上述代码产生以下输出 -

44 The placed characters in the string:
 Today is Wednesday, May 22.
 Time: 02:28 PM