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
廣告