Fonction GetDateFormatEx (datetimeapi.h)
Met en forme une date en tant que chaîne de date pour un paramètre régional spécifié par nom. La fonction met en forme une date spécifiée ou la date système locale.
Syntaxe
int GetDateFormatEx(
[in, optional] LPCWSTR lpLocaleName,
[in] DWORD dwFlags,
[in, optional] const SYSTEMTIME *lpDate,
[in, optional] LPCWSTR lpFormat,
[out, optional] LPWSTR lpDateStr,
[in] int cchDate,
[in, optional] LPCWSTR lpCalendar
);
Paramètres
[in, optional] lpLocaleName
Pointeur vers un nom de paramètres régionaux ou l’une des valeurs prédéfinies suivantes.
[in] dwFlags
Indicateurs spécifiant différentes options de fonction qui peuvent être définies si lpFormat a la valeur NULL. L’application peut spécifier une combinaison des valeurs suivantes et LOCALE_USE_CP_ACP ou LOCALE_NOUSEROVERRIDE.
Si l’application ne spécifie pas DATE_YEARMONTH, DATE_MONTHDAY, DATE_SHORTDATE ou DATE_LONGDATE, et si lpFormat a la valeur NULL, DATE_SHORTDATE est la valeur par défaut.
[in, optional] lpDate
Pointeur vers une structure SYSTEMTIME qui contient les informations de date à mettre en forme. L’application peut définir ce paramètre sur NULL si la fonction doit utiliser la date actuelle du système local.
[in, optional] lpFormat
Pointeur vers une chaîne d’image de format utilisée pour former la date. Les valeurs possibles pour la chaîne d’image de format sont définies dans Jour, Mois, Année et Images au format Era.
Par exemple, pour obtenir la chaîne de date « Wed, Aug 31 94 », l’application utilise la chaîne d’image « ddd',' MMM jj yy ».
La fonction utilise les paramètres régionaux spécifiés uniquement pour les informations qui ne sont pas spécifiées dans la chaîne d’image de format, par exemple, les noms des jours et des mois pour les paramètres régionaux. L’application peut définir ce paramètre sur NULL pour mettre en forme la chaîne en fonction du format de date pour les paramètres régionaux spécifiés.
[out, optional] lpDateStr
Pointeur vers une mémoire tampon dans laquelle cette fonction récupère la chaîne de date mise en forme.
[in] cchDate
Taille, en caractères, de la mémoire tampon lpDateStr . L’application peut définir ce paramètre sur 0 pour renvoyer la taille de mémoire tampon requise pour contenir la chaîne de date mise en forme. Dans ce cas, la mémoire tampon indiquée par lpDateStr n’est pas utilisée.
[in, optional] lpCalendar
Réservés au; doit avoir la valeur NULL.
Valeur retournée
Retourne le nombre de caractères écrits dans la mémoire tampon lpDateStr en cas de réussite. Si le paramètre cchDate a la valeur 0, la fonction retourne le nombre de caractères requis pour contenir la chaîne de date mise en forme, y compris le caractère null de fin.
Cette fonction retourne 0 si elle ne réussit pas. Pour obtenir des informations d’erreur étendues, l’application peut appeler GetLastError, qui peut retourner l’un des codes d’erreur suivants :
- ERROR_INSUFFICIENT_BUFFER. Une taille de mémoire tampon fournie n’était pas assez grande ou elle a été incorrectement définie sur NULL.
- ERROR_INVALID_FLAGS. Les valeurs fournies pour les indicateurs n’étaient pas valides.
- ERROR_INVALID_PARAMETER. L’une des valeurs de paramètre n’était pas valide.
Remarques
Le nom du jour, le nom du jour abrégé, le nom du mois et le nom du mois abrégé sont tous localisés en fonction de l’identificateur des paramètres régionaux.
Les valeurs de date dans la structure indiquée par lpDate doivent être valides. La fonction vérifie chacune des valeurs de date : année, mois, jour et jour de la semaine. Si le jour de la semaine est incorrect, la fonction utilise la valeur correcte et ne retourne aucune erreur. Si l’une des autres valeurs de date se trouve en dehors de la plage correcte, la fonction échoue et définit la dernière erreur sur ERROR_INVALID_PARAMETER.
La fonction ignore les membres de temps de la structure SYSTEMTIME indiqués par lpDate. Il s’agit notamment de wHour, wMinute, wSecond et wMillisecondes.
Si le paramètre lpFormat contient une chaîne de format incorrect, la fonction ne retourne aucune erreur, mais forme simplement la meilleure chaîne de date possible. Par exemple, les seules images d’année valides sont L"aaaa » et L"yyy », où le « L » indique une chaîne Unicode (caractères 16 bits). Si L"y » est passé, la fonction suppose L"yy ». Si L"yyyy » est transmis, la fonction suppose L"yyyyy ». Si plus de quatre images de date (L"dddd ») ou quatre mois (L"MMMM ») sont transmises, la fonction par défaut est L"dddd » ou L"MMMM ».
L’application doit inclure tout texte qui doit rester dans sa forme exacte dans la chaîne de date entre guillemets simples dans l’image au format de date. Le guillemet unique peut également être utilisé comme caractère d’échappement pour permettre l’affichage du guillemet unique lui-même dans la chaîne de date. Toutefois, la séquence d’échappement doit être placée entre deux guillemets simples. Par exemple, pour afficher la date sous la forme « May '93 », la chaîne de format est : L"MMMM ''''yy ». Le premier et le dernier guillemet unique sont les guillemets englobants. Les deuxième et troisième guillemets simples sont la séquence d’échappement permettant d’afficher le guillemet unique avant le siècle.
Lorsque l’image de date contient à la fois une forme numérique du jour (d ou dd) et le nom complet du mois (MMMM), la forme génitive du nom du mois est récupérée dans la chaîne de date.
Pour obtenir le format de date court et long par défaut sans effectuer de mise en forme réelle, l’application doit utiliser GetLocaleInfoEx avec la constante LOCALE_SSHORTDATE ou LOCALE_SLONGDATE . Pour obtenir le format de date d’un autre calendrier, l’application utilise GetLocaleInfoEx avec la constante LOCALE_IOPTIONALCALENDAR . Pour obtenir le format de date d’un calendrier particulier, l’application utilise GetCalendarInfoEx, en passant l’identificateur de calendrier approprié. Il peut appeler EnumCalendarInfoEx ou EnumDateFormatsEx pour récupérer les formats de date d’un calendrier particulier.
Cette fonction peut récupérer des données à partir de paramètres régionaux personnalisés. Il n’est pas garanti que les données soient identiques d’un ordinateur à l’autre ou entre les exécutions d’une application. Si votre application doit conserver ou transmettre des données, consultez Utilisation des données de paramètres régionaux persistants.
Le format DATE_LONGDATE comprend deux types de modèles de date : les modèles qui incluent le jour de la semaine et les modèles qui n’incluent pas le jour de la semaine. Par exemple, « mardi 18 octobre 2016 » ou « 18 octobre 2016 ». Si votre application doit s’assurer que les dates utilisent l’un de ces types de modèles et non l’autre type, votre application doit effectuer les actions suivantes :
- Appelez la fonction EnumDateFormatsExEx pour obtenir tous les formats de date pour le format DATE_LONGDATE.
- Recherchez le premier format de date passé à la fonction de rappel que vous avez spécifiée pour EnumDateFormatsExEx qui correspond à l’identificateur de calendrier demandé et qui a une chaîne de format de date qui correspond aux exigences de votre application. Par exemple, recherchez le premier format de date qui inclut « dddd » si votre application exige que la date inclue le nom complet du jour de la semaine, ou recherchez le premier format de date qui n’inclut ni « dddd » ni « dddd » si votre application exige que la date inclue le nom abrégé ou le nom complet du jour de la semaine.
- Appelez la fonction GetDateFormatEx avec le paramètre lpFormat défini sur la chaîne de format de date que vous avez identifiée comme format approprié dans la fonction de rappel.
Si la présence ou l’absence du jour de la semaine dans le format de date longue n’a pas d’importance pour votre application, votre application peut appeler GetDateFormatEx directement sans énumérer au préalable tous les formats de date longs en appelant EnumDateFormatsExEx.
À compter de Windows 8 : si votre application transmet des balises de langue à cette fonction à partir de l’espace de noms Windows.Globalization, elle doit d’abord convertir les balises en appelant ResolveLocaleName.
À compter de Windows 8 : GetDateFormatEx est déclaré dans Datetimeapi.h. Avant Windows 8, elle était déclarée dans Winnls.h.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista [applications de bureau | applications UWP] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | datetimeapi.h |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |
Voir aussi
Images au format Jour, Mois, Année et Ère
NLS : Exemple d’API basées sur le nom