Formato de fechas y horas

Flash Player 10.1 y posterior, Adobe AIR 2.0 y posterior

El formato de visualización de los valores de fecha y hora también varía sustancialmente de región a región. Por ejemplo, el segundo día de enero de 1962 a las 1:01 PM se visualizaría del modo siguiente en formato corto y en determinadas configuraciones regionales:

Configuración local

Formato de fecha y hora

en-US (inglés, EE.UU.)

1/2/62 1:01pm

fr-FR (francés, Francia)

2/1/62 13:01

ja-JP (japonés, Japón)

1962/2/1 13:01

Uso de la clase DateTimeFormatter

La clase DateTimeFormatter aplica formato a valores Date en cadenas de fecha y hora según las convenciones de una configuración regional específica.

El formato está regido por una cadena de patrones que contiene secuencias de letras que se reemplazan con valores de fecha y hora. Por ejemplo, en el patrón "yyyy/MM", los caracteres "yyyy" se reemplazan por un año de cuatro dígitos seguido de un carácter "/" y un mes de dos dígitos.

La cadena de patrones se puede definir de forma explícita con el método setDateTimePattern(). Sin embargo, es mejor dejar que el patrón se defina automáticamente en función de la configuración regional del usuario y de las preferencias del sistema operativo. Esta práctica ayuda a garantizar que el resultado es correcto desde un punto de vista cultural.

DateTimeFormatter puede representar fechas y horas en tres estilos estándar (LONG, MEDIUM y SHORT), y también puede utilizar un patrón CUSTOM. Se puede utilizar un estilo para la fecha y un segundo estilo para la hora. Los patrones reales utilizados por cada estilo pueden variar en función del sistema operativo, aunque no demasiado.

Puede especificar los estilos al crear un objeto DateTimeFormatter. Si no se especifican parámetros de estilo, se establecen de forma predeterminada en DateTimeStyle.LONG. Puede cambiar los estilos más adelante con el método setDateTimeStyles(), como puede verse en el siguiente ejemplo:

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

Localización de nombres de meses y de días

Muchas aplicaciones utilizan listas de nombres de meses y de días de la semana y vistas de calendario o en listas desplegables.

Puede recuperar una lista localizada de los nombres de los meses con el método DateTimeFormatter.getMonthNames(). En función del sistema operativo, dispondrá de versiones completas y abreviadas. Pase el valor DateTimeNameStyle.FULL para obtener nombres de meses largos. Pase los valores DateTimeNameStyle.LONG_ABBREVIATION o DateTimeNameStyle.SHORT_ABBREVIATION para obtener una versión más corta.

En algunos idiomas, el nombre del mes cambia (en su forma genitiva) cuando no se sitúa junto al valor del día en un formato de fecha. Si planea utilizar nombres de meses aislados, transfiera el valor DateTimeNameContext.STANDALONE al método getMonthNames(). Para utilizar nombres de mes en fechas con formato, sin embargo, transfiera el valor 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.

El método DateTimeFormatter.getWeekdayNames() proporciona una lista localizada de los nombres de los días de la semana. El método getWeekdayNames() acepta los mismos parámetros nameStyle y context que el método 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.

Además, el método getFirstWeekday() devuelve el valor de índice del día que suele marcar el inicio de la semana en la configuración regional seleccionada.