Formatage des dates et heures

Flash Player 10.1 et les versions ultérieures, Adobe AIR 2.0 et les versions ultérieures

Le format d’affichage de la date et de l’heure varie également considérablement d’une région à l’autre. Voici par exemple comment le 2 janvier 1962 à 13:01 est affiché dans un format court en fonction de divers paramètres régionaux :

Paramètres régionaux

Format de la date et de l’heure

en-US (anglais, Etats-Unis)

1/2/62 1:01pm

fr-FR (français, France)

2/1/62 13:01

ja-JP (japonais, Japon)

1962/2/1 13:01

Utilisation de la classe DateTimeFormatter

La classe DateTimeFormatter formate les valeurs Date en chaînes de date et d’heure conformément aux conventions de paramètres régionaux donnés.

Le formatage est régi par une chaîne modèle qui contient des séquences de lettres remplacées par des valeurs de date ou d’heure. Par exemple, dans le modèle « yyyy/MM », les caractères « yyyy » sont remplacés par une année à quatre chiffres, suivie du caractère « / » et d’un mois à deux chiffres.

La méthode setDateTimePattern() permet de définir explicitement la chaîne modèle. Il est toutefois préférable d’activer la définition automatique du modèle en fonction des préférences du système d’exploitation et des paramètres régionaux de l’utilisateur. Cette stratégie contribue à assurer un résultat approprié d’un point de vue culturel.

L’élément DateTimeFormatter peut représenter des dates et heures en trois styles standard (LONG, MEDIUM et SHORT) et faire appel à un modèle CUSTOM. Vous pouvez utiliser un style pour la date et un autre pour l’heure. Les modèles associés à chaque style varient sensiblement d’un système d’exploitation à l’autre.

Vous pouvez spécifier les styles lors de la création d’un objet DateTimeFormatter. Si les paramètres de style ne sont pas spécifiés, ils sont définis sur DateTimeStyle.LONG par défaut. Vous pouvez modifier les styles ultérieurement à l’aide de la méthode setDateTimeStyles(), comme indiqué dans l’exemple suivant :

var date:Date = new Date(2009, 2, 27, 13, 1); 
var dtf:DateTimeFormatter = new DateTimeFormatter("en-US", 
    DateTimeStyle.LONG, DateTimeStyle.LONG); 
 
var longDate:String = dtf.format(date); 
trace(longDate); // March 27, 2009 1:01:00 PM 
 
dtf.setDateTimeStyles(DateTimeStyle.SHORT, DateTimeStyle.SHORT); 
var shortDate:String = dtf.format(date); 
trace(shortDate); // 3/27/09 1:01 PM

Localisation des noms de mois et de jour

De nombreuses applications font appel à des listes de noms de mois et de jour de la semaine dans les calendriers ou listes déroulantes affichés.

La méthode DateTimeFormatter.getMonthNames() permet de récupérer une liste localisée de noms de mois. Le système d’exploitation détermine si les formes complètes et abrégées sont disponibles. Transmettez la valeur DateTimeNameStyle.FULL pour extraire les noms de mois complet. Transmettez la valeur DateTimeNameStyle.LONG_ABBREVIATION ou DateTimeNameStyle.SHORT_ABBREVIATION pour obtenir des versions abrégées.

Dans certaines langues, un nom de mois change (il est alors mis au génitif) s’il est placé à côté de la valeur jour dans un format de date. Si vous envisagez d’utiliser les noms de mois sans spécifier de jour, transmettez la valeur DateTimeNameContext.STANDALONE à la méthode getMonthNames(). Pour utiliser les noms de mois dans les dates formatées, transmettez toutefois la valeur DateTimeNameContext.FORMAT.

var dtf:DateTimeFormatter = new DateTimeFormatter("fr-FR"); 
var months:Vector.<String> = dtf.getMonthNames(DateTimeNameStyle.FULL, 
        DateTimeNameContext.STANDALONE); 
trace(months[0]); // janvier 
months = dtf.getMonthNames(DateTimeNameStyle.SHORT_ABBREVIATION, 
         DateTimeNameContext.STANDALONE); 
trace(months[0]); // janv.

La méthode DateTimeFormatter.getWeekdayNames() fournit une liste localisée de noms de jour de la semaine. La méthode getWeekdayNames() gère les mêmes paramètres nameStyle et context que la méthode getMonthNames().

var dtf:DateTimeFormatter = new DateTimeFormatter("fr-FR"); 
var weekdays:Vector.<String> = dtf.getWeekdayNames(DateTimeNameStyle.FULL, 
           DateTimeNameContext.STANDALONE); 
trace(weekdays[0]); // dimanche 
weekdays = dtf.getWeekdayNames(DateTimeNameStyle.LONG_ABBREVIATION, 
           DateTimeNameContext.STANDALONE); 
trace(weekdays[0]); // dim.

Par ailleurs, la méthode getFirstWeekday() renvoie la valeur d’index du jour qui représente traditionnellement le début de la semaine dans les paramètres régionaux sélectionnés.