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\n", buffer);

参数

此函数接受以下参数 -

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

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

3. format:指向一个以 null 结尾的宽字符字符串的指针,该字符串指定转换的格式,以下是日期和时间格式化中使用的常用转换说明符列表 -

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

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

返回类型

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

示例 1

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

#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);
   
   // Custom formatting of time
   wcsftime(buffer, 80, L"The current Date: %A, %F %I:%M %p", timeinfo);
   wprintf(L"%ls\n", buffer);

   return 0;
}

输出

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

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

示例 2

以下示例使用各种函数以 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);
    
   // Set the locale category
   setlocale(LC_ALL, "ja_JP.utf8");
    
   // Custom Formatting to 24-hour clock
   wcsftime(buffer, 80, L"現在の日時: %A、%F %H:%M", timeinfo); 
    
   // Display the result
   wprintf(L"%ls\n", 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.\n Time: %I:%M %p", timeinfo);

   printf("%zu is the placed characters in the string:\n\n%ls\n", r, dest);
   return 0;
}

输出

以上代码产生以下输出 -

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