EnumDateFormatsExEx function

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_opt_ LPCWSTR              lpLocaleName,
  _In_     DWORD                dwFlags,
  _In_     LPARAM               lParam


lpDateFmtEnumProcExEx [in]

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

lpLocaleName [in, optional]

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

dwFlags [in]

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


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.


lParam [in]

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.


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.


Minimum supported client

Windows Vista [desktop apps | UWP apps]

Minimum supported server

Windows Server 2008 [desktop apps | UWP apps]


Winnls.h (include Windows.h)





See also

National Language Support
National Language Support Functions