Comment utiliser les modèles de format des dates et heures (HTML)

[ Cet article est destiné aux développeurs Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Utilisez l’Windows.Globalization.DateTimeFormattingAPI avec des modèles personnalisés pour afficher les dates et heures dans le format que vous désirez.

Windows.Globalization.DateTimeFormatting fournit différentes façons de formater correctement les dates et heures selon les langues et régions du monde. Dans la plupart des cas, vous pouvez utiliser des formats standard pour l’année, le mois, le jour, etc. Vous pouvez également utiliser les modèles de chaîne standard comme "date longue" ou "jour du mois" pour vous assurer que le format DateTime obtenu est approprié à la culture, à la langue et à la région de l’utilisateur. Dans certains cas toutefois, vous pouvez vouloir davantage de contrôle sur l’ordre et le format des constituants de la chaîne DateTime que vous souhaitez afficher. Vous voulez peut-être cibler une culture ou région connue particulière, ou afficher les constituants dans un format non standard.

À cette fin, vous pouvez utiliser une syntaxe spéciale pour le paramètre du modèle de chaîne, appelée "modèle". La syntaxe modèle vous permet d’obtenir des constituants individuels d’un DateTimeobjet—, seulement le nom du mois ou la valeur de l’année, par exemple, —afin de les afficher dans n’importe quel format personnalisé que vous choisissez.

Ce que vous devez savoir

Technologies

Prérequis

Il est important de noter que, lorsque vous utilisez des modèles, vous créez un format personnalisé qui n’est pas forcément valide dans toutes les cultures. Par exemple, considérez le modèle "jour du mois" :

var datefmt = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("month day");

Cela crée un formateur basé sur la langue et la région du contexte actuel. Il affiche donc toujours le mois et le jour ensemble dans un format global approprié. Il affiche par exemple "January 1" pour l’anglais (États-Unis), mais "1er janvier" pour le français (France) et "1月1日" pour le japonais. C’est parce que le modèle est basé sur une chaîne de modèle spécifique à la culture, qui est accessible via la propriété Pattern :

var monthdaypattern = datefmt.patterns;

Les résultats sont différents selon la langue et la région du formateur. Notez que différentes régions peuvent utiliser différents constituants, dans des ordres différents, avec ou sans espacement et caractères supplémentaires :

En-US: "{month.full} {day.integer}"
Fr-FR: "{day.integer} {month.full}"
Ja-JP: "{month.integer}月{day.integer}日"

Vous pouvez utiliser les modèles pour construire un DateTimeFormatter personnalisé, par exemple celui-ci basé sur le modèle anglais (États-Unis) :

var datefmt = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("{month.full} {day.integer}");

Windows renvoie des valeurs spécifiques à la culture pour les constituants individuels à l’intérieur des crochets {}. Avec la syntaxe modèle, cependant, l’ordre des constituants est invariable. Vous obtenez exactement ce que vous demandez, ce qui pourrait ne pas convenir d’un point de vue culturel :

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, la cohérence des modèles n’est pas garantie dans le temps. Les pays ou régions peuvent apporter des changements à leurs systèmes calendaires, ce qui modifie un modèle de format. Windows met à jour la sortie des formateurs pour tenir compte de ces changements. C’est pourquoi vous ne devez utiliser la syntaxe modèle pour la mise en forme de DateTime que :

  • si vous n’êtes pas dépendant d’une sortie particulière pour un format ;
  • si vous n’avez pas besoin que le format respecte une norme spécifique à la culture ;
  • si vous voulez précisément que le modèle soit invariable dans toutes les cultures ;
  • si vous avez l’intention de localiser le modèle.

Pour résumer les différences entre les modèles de chaînes standard et les modèles de chaînes non standard :

Modèles de chaîne, comme « mois jour » :

  • Représentation abstraite d’un format DateTime qui inclut des valeurs pour le mois et le jour, dans un certain ordre.
  • Garantie de retourner un format standard valide pour toutes les valeurs langue-région prises en charge par Windows.
  • Garantie de produire une chaîne formatée adaptée à la langue-région donnée.
  • Les combinaisons de constituants ne sont pas toutes valides. Par exemple, il n’y a aucun modèle de chaîne pour "dayofweek day".

Modèles de chaînes, tels que « {month.full} {day.integer} » :

  • Chaîne explicitement ordonnée qui exprime le nom complet du mois, suivi d’un espace, suivi par l’entier du jour, dans cet ordre.
  • Peut ne pas correspondre à un format standard valable pour toute paire langue-région.
  • Pas de garantie d’être adapté d’un point de vue culturel.
  • Toute combinaison de constituants peut être spécifiée dans n’importe quel ordre.

Instructions

Supposons que vous souhaitiez afficher le mois et le jour courants avec l’heure courante dans un format spécifique. Par exemple, vous aimeriez que les utilisateurs anglais des États-Unis voient quelque chose comme ceci :

June 25 | 1:38 PM

La partie date correspond au modèle "jour du mois" et la partie heure correspond au modèle "minute de l’heure". Vous pouvez donc créer un format personnalisé qui concatène les éléments qui composent ces modèles.

Tout d’abord, obtenez les formateurs pour les modèles de date et heure pertinents, puis les modèles de ces modèles :

// Get formatters for the date part and the time part.
var dtf = Windows.Globalization.DateTimeFormatting;
var mydate = dtf.DateTimeFormatter("month day");
var mytime = dtf.DateTimeFormatter("hour minute");

// Get the patterns from these formatters.
var mydatepattern = mydate.patterns[0];
var mytimepattern = mytime.patterns[0];

Votre format personnalisé doit être stocké dans une chaîne de ressource localisable. Par exemple, la chaîne pour anglais (États-Unis) serait "{date} | {time}". Les localisateurs peuvent régler cette chaîne selon les besoins. Ils peuvent par exemple changer l’ordre des constituants, si cela semble plus naturel dans une langue ou région d’avoir l’heure qui précède la date. Ils peuvent également remplacer "|" par quelque autre caractère de séparation. Lors de l’exécution vous remplacez les parties {date} et {time} de la chaîne par le modèle pertinent :

// Assemble the custom pattern. This string comes from a resource, and should be localizable. 
var mydateplustime = WinJS.Resources.getString("date_plus_time");
mydateplustime = mydateplustime.replace("{date}", mydatepattern);
mydateplustime = mydateplustime.replace("{time}", mytimepattern);

Vous pouvez ensuite construire un nouveau formateur basé sur le modèle personnalisé :

// Get the custom formatter.
var mydateplustimefmt = new dtf.DateTimeFormatter(mydateplustime);

Rubriques associées

Exemple de mise en forme de date et heure

Windows.Globalization.DateTimeFormatting

Windows.Foundation.DateTime