EnumDateFormatsExEx function (winnls.h)

Enumerates the long date, short date, or year/month formats that are available for a locale specified by name.

Note  The application should call this function in preference to EnumDateFormats or EnumDateFormatsEx if designed to run only on Windows Vista and later.

Note  This function can enumerate data that changes between releases, for example, due to a custom locale. If your application must persist or transmit data, see Using Persistent Locale Data.


BOOL EnumDateFormatsExEx(
  [in]           DATEFMT_ENUMPROCEXEX lpDateFmtEnumProcExEx,
  [in, optional] LPCWSTR              lpLocaleName,
  [in]           DWORD                dwFlags,
  [in]           LPARAM               lParam


[in] lpDateFmtEnumProcExEx

Pointer to an application-defined callback function. For more information, see EnumDateFormatsProcExEx.

[in, optional] lpLocaleName

Pointer to a locale name, or one of the following predefined values.

[in] dwFlags

Flag specifying date formats. The application can supply one of the following values or the LOCALE_USE_CP_ACP constant.

Value Meaning
Use short date formats. This value cannot be used with any of the other flag values.
Use long date formats. This value cannot be used with any of the other flag values.
Use year/month formats. This value cannot be used with any of the other flag values.
Use month/day formats. This value cannot be used with any of the other flag values.

[in] lParam

An application-provided parameter to pass to the callback function. This value is especially useful for multi-threaded applications.

Return value

Returns a nonzero value if successful, or 0 otherwise. To get extended error information, the application can call GetLastError, which can return one of the following error codes:

  • ERROR_BADDB. The function could not access the data. This situation should not normally occur, and typically indicates a bad installation, a disk problem, or the like.
  • ERROR_INVALID_FLAGS. The values supplied for flags were not valid.
  • ERROR_INVALID_PARAMETER. Any of the parameter values was invalid.


Note  This API is being updated to support the May 2019 Japanese era change. If your application supports the Japanese calendar, you should validate that it properly handles the new era. See Prepare your application for the Japanese era change for more information.
The function enumerates the date formats by passing date format string pointers, one at a time, to the specified application-defined callback function, along with an application-defined constant that is useful for multi-threaded applications. This process continues until EnumDateFormatsExEx finds the last date format or the callback function returns FALSE.

Beginning in Windows 8: If your app passes language tags to this function from the Windows.Globalization namespace, it must first convert the tags by calling ResolveLocaleName.


Requirement Value
Minimum supported client Windows Vista [desktop apps | UWP apps]
Minimum supported server Windows Server 2008 [desktop apps | UWP apps]
Target Platform Windows
Header winnls.h (include Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

See also




National Language Support

National Language Support Functions