GetDateFormatEx 函数是 Windows API 中的一个函数,它用于获取日期的格式化字符串,与 GetDateFormatA 函数相似,但支持更多的定制选项。

以下是 GetDateFormatEx 函数的一般形式和一些参数的说明:
int GetDateFormatEx(
  LPCWSTR            lpLocaleName,
  DWORD              dwFlags,
  const SYSTEMTIME *lpDate,
  LPCWSTR            lpFormat,
  LPWSTR             lpDateStr,
  int                cchDate,
  LPCWSTR            lpCalendar
);

参数说明:

  •  lpLocaleName:指定一个 Locale 名称,用于指定日期的语言和格式规则。

  •  dwFlags:指定格式化的日期标志。可以是日期格式选项的组合,例如 DATE_SHORTDATE 或 DATE_LONGDATE。

  •  lpDate:指向 SYSTEMTIME 结构的指针,包含要格式化的日期和时间。

  •  lpFormat:一个以 null 结尾的字符串,指定自定义日期/时间格式。可以为 NULL,表示使用默认格式。

  •  lpDateStr:接收格式化日期/时间字符串的缓冲区。

  •  cchDate:缓冲区的大小,以字符数为单位。

  •  lpCalendar:指定一个日历的名称,用于指定特定的日历系统。可以为 NULL,表示使用默认日历。


函数返回值为生成的日期字符串的长度,不包括 null 终止符,如果出现错误则返回 0。

以下是一个简单的示例,演示如何使用 GetDateFormatEx 函数:
#include <windows.h>
#include <stdio.h>

int main() {
    SYSTEMTIME st;
    GetLocalTime(&st);

    WCHAR szDate[50];
    int nLength = GetDateFormatEx(L"en-US", 0, &st, L"yyyy-MM-dd", szDate, sizeof(szDate)/sizeof(WCHAR), L"Gregorian");

    if (nLength > 0) {
        wprintf(L"Formatted Date: %s\n", szDate);
    } else {
        wprintf(L"Error getting date format. Error code: %lu\n", GetLastError());
    }

    return 0;
}

此示例获取当前本地时间,使用默认日期格式 "yyyy-MM-dd" 格式化日期,并将结果打印到控制台。你可以根据需要调整 lpFormat 和 lpLocaleName 参数以指定其他自定义日期/时间格式和语言。


转载请注明出处:http://www.zyzy.cn/article/detail/26275/Win32 API/Datetimeapi.h/GetDateFormatEx