Entrainement
Module
Mettre en forme des données alphanumériques en vue de leur affichage en C# - Training
Explorez les méthodes de base en C# pour mettre en forme des données alphanumériques.
Ce navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Utilisez des classes dans l’espace de noms Windows.Globalization.DateTimeFormatting avec des gabarits et des modèles personnalisés pour afficher les dates et les heures dans le format souhaité.
La classe DateTimeFormatter fournit différentes façons de mettre en forme correctement les dates et les heures pour les langues et régions du monde entier. Vous pouvez utiliser des formats standard pour l’année, le mois, le jour, et ainsi de suite. Vous pouvez également transférer un modèle de format à l’argument formatTemplate du constructeur DateTimeFormatter, tel que « forme longue de la date » ou « mois jour ».
Toutefois, lorsque vous souhaitez contrôler encore plus l’ordre et le format des composants de l’objet DateHeure que vous souhaitez afficher, vous pouvez passer un modèle de format à l’argument formatTemplate du constructeur. Un modèle de format utilise une syntaxe spéciale, qui vous permet d’obtenir des composants individuels d’un objet DateHeure (juste le nom du mois, ou simplement la valeur d’année, par exemple) pour les afficher dans le format personnalisé que vous choisissez. En outre, le modèle peut être localisé pour s’adapter à d’autres langues et régions.
Notez qu’il s’agit uniquement d’une vue d’ensemble des modèles de format. Pour une présentation plus complète des modèles de format et des modèles de format, reportez-vous à la section Remarque de la classe DateTimeFormatter.
Un modèle de format est une chaîne de format indépendant de la culture. Par conséquent, si vous définissez un DateTimeFormatter à l’aide d’un gabarit de format, le formateur affiche vos composants de format dans l’ordre approprié pour la langue actuelle. À l’inverse, un modèle de format est spécifique à une culture. Si vous créez un DateTimeFormatter à l’aide d’un modèle de format, le formateur utilise le modèle exactement comme indiqué. Par conséquent, un modèle n’est pas nécessairement valable dans toutes les cultures.
Prenons un exemple. Nous transmettons un gabarit de format simple (et non un modèle) au constructeur DateTimeFormatter. Il s’agit du gabarit de format « mois jour ».
var dateFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("month day");
Il crée un formateur basé sur les valeurs de langue et de région du contexte actuel. L’ordre des composants dans un gabarit de format n’a pas d’importance. Le formateur les affiche dans le bon ordre pour la langue concernée. On aura donc « January 1 » en anglais (États-Unis), « 1er janvier » en français (France) et « 1月1日 » en japonais.
En revanche, un modèle de format est propre à la culture. Accédons au modèle de format pour notre modèle de format.
IReadOnlyList<string> monthDayPatterns = dateFormatter.Patterns;
Les résultats varient selon la langue et la région d’exécution. Des régions différentes peuvent utiliser des composants différents, dans des ordres différents, avec ou sans caractères supplémentaires et espacement.
En-US: "{month.full} {day.integer}"
Fr-FR: "{day.integer} {month.full}"
Ja-JP: "{month.integer}月{day.integer}日"
Dans l’exemple ci-dessus, nous avons saisi une chaîne de format indépendante de la culture et nous avons obtenu en retour une chaîne de format spécifique à la culture (qui était fonction de la langue et de la région en vigueur au moment de l’appel de dateFormatter.Patterns
). Par conséquent, si vous créez un DateTimeFormatter à partir d’un modèle de format spécifique à la culture, il sera valide uniquement pour des langues/régions spécifiques.
var dateFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("{month.full} {day.integer}");
Le formateur ci-dessus retourne des valeurs propres à la culture pour les composants individuels entre les crochets {}. Mais l’ordre des composants dans un modèle de format est invariable. Vous obtenez précisément ce que vous demandez, ce qui peut être approprié ou non d’un point de vue culturel. Ce formateur est valide pour l’anglais (États-Unis), mais pas pour le français (France) ni pour le japonais.
En-US: January 1
Fr-FR: janvier 1 (inappropriate for France; non-standard order)
Ja-JP: 1月1 (inappropriate for Japan; the day symbol 日 is missing)
En outre, un modèle qui est correct aujourd’hui ne le sera peut-être plus à l’avenir. Les pays ou régions peuvent modifier leurs systèmes de calendrier, ce qui modifie un gabarit de format. Windows met à jour la sortie des formateurs en fonction des modèles de format pour prendre en charge ces modifications. Par conséquent, vous devez uniquement utiliser la syntaxe de modèle dans au moins un de ces cas.
Voici un résumé de la différence entre les gabarits de format et les modèles de format.
Mettre en forme des modèles, tels que « mois jour »
Modèles de format, tels que « {month.full} {day.integer} »
Supposons que vous souhaitiez afficher le mois et le jour actuels ainsi que l’heure actuelle, dans un format spécifique. Par exemple, vous aimeriez que les locuteurs de l’anglais américain reçoivent un message de ce type :
June 25 | 1:38 PM
Les parties date et heure correspondent respectivement aux gabarits de format « mois jour » et « heure minute ». Vous pouvez donc construire des formateurs pour les gabarits de format de date et d’heure concernés, puis concaténer leurs résultats à l’aide d’une chaîne de format localisable.
var dateToFormat = System.DateTime.Now;
var resourceLoader = Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView();
var dateFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("month day");
var timeFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("hour minute");
var date = dateFormatter.Format(dateToFormat);
var time = timeFormatter.Format(dateToFormat);
string output = string.Format(resourceLoader.GetString("CustomDateTimeFormatString"), date, time);
CustomDateTimeFormatString
est un identificateur de ressource faisant référence à une ressource localisable dans un fichier de ressources (.resw). Pour une langue par défaut définie sur l’anglais (États-Unis), cette valeur est définie sur « {0} | {1} » ainsi qu’un commentaire indiquant que « {0} » est la date et « {1} », l’heure. Les traducteurs peuvent ainsi ajuster les éléments de format selon leurs besoins. Par exemple, ils peuvent modifier l’ordre des éléments s’il semble plus naturel dans une langue ou une région de faire précéder l’heure par la date. Ils peuvent également remplacer « | » par un autre séparateur.
Une autre façon de mettre en œuvre cet exemple consiste à demander aux deux formateurs leurs modèles de format, à les concaténer, puis à construire un troisième formateur à partir du modèle de format résultant.
var resourceLoader = Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView();
var dateFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("month day");
var timeFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("hour minute");
string dateFormatterPattern = dateFormatter.Patterns[0];
string timeFormatterPattern = timeFormatter.Patterns[0];
string pattern = string.Format(resourceLoader.GetString("CustomDateTimeFormatString"), dateFormatterPattern, timeFormatterPattern);
var patternFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter(pattern);
string output = patternFormatter.Format(System.DateTime.Now);
Commentaires sur Windows developer
Windows developer est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Entrainement
Module
Mettre en forme des données alphanumériques en vue de leur affichage en C# - Training
Explorez les méthodes de base en C# pour mettre en forme des données alphanumériques.