• No se han encontrado resultados

Forme fecha y hora con DateFormat

In document Java soluciones de programación (página 168-171)

Componentes clave

Clases Métodos

java.txt.DateFormat static fi nal DateFormat getDateInstance(int fmt) static fi nal

DateFormat getTimeInstance(int fmt) fi nal String format(Date f)

java.util.Date

La clase DateFormat ofrece una opción de las capacidades proporcionadas por Formatter cuando se forma el tiempo y la fecha. DateFormat es sensible a la confi guración de región e idioma local, que signifi ca que puede formar información de fecha y hora para varios idiomas y países. DateFormat está empaquetado en java.text. Es una clase abstracta. Sin embargo, proporciona varios métodos de que devuelven objetos de DateFormat, que extiende Format (que es una clase abstracta que defi ne los métodos de formación básicos.) Es una superclase de SimpleDateFormat.

NOTA DateFormat también le da la capacidad de analizar sintácticamente cadenas que contienen información

de fecha y hora en objetos de Date. Por tanto, tiene capacidades más allá de la simple formación.

Paso a paso

Hay varias maneras de formar la fecha usando DateFormat. En esta solución se dan los siguientes pasos:

1. Obtenga una instancia de DateFormat al llamar al método estático getDateInstance( ), especifi cando el formato de fecha deseado.

2. Obtenga una instancia de Date que contiene la fecha que habrá de formarse.

3. Produzca una cadena que contiene un valor de fecha formado al llamar al método format( ), especifi cando el objeto de Date.

Hay varias maneras de formar la hora al usar DateFormat. En esta solución se dan los siguientes pasos:

1. Obtenga una instancia de DateFormat al llamar al método estático getTimeInstance( ), especifi cando el formato de hora deseado.

2. Obtenga una instancia de Date que contiene la hora que habrá de formarse.

3. Produzca una cadena que contiene un valor de fecha formado al llamar al método format( ), especifi cando el objeto de Date.

Análisis

Para obtener un objeto de DateFormat adecuado para la formación de fecha, llame al método estático getDateInstance( ). Está disponible en varias formas. La que se usa en esta solución es

static fi nal DateFormat getDateInstance(int fmt)

Para obtener un objeto de DateFormat, adecuado para formar la hora, use getTimeInstance( ). También está disponible en varias versiones. La que se usa en esta solución es

static fi nal DateFormat getTimeInstance(int fmt)

Para ambos métodos, el argumento fmt debe tener uno de los siguientes valores: DEFAULT, SHORT, MEDIUM, LONG o FULL. Se trata de constantes int defi nidas por DateFormat. Hace que se presenten diferentes detalles acerca de la fecha y hora cuando se forman. Los formatos de fecha y hora son sensibles a convenciones de idioma y país. En las versiones de getDateInstance( ) y getTimeInstance( ) que se acaban de mostrar usan la confi guración actual de región e idioma local (es decir, predeterminado). Otras versiones le permiten especifi car explícitamente la confi guración local.

A continuación, obtenga un objeto de java.util.Date que contiene la fecha o la hora que habrá de obtenerse. Una manera es crear un objeto de Date al usar este constructor:

Date( )

Esto crea un objeto de Date que contiene la fecha y hora actuales del sistema.

Una vez que haya obtenido las instancias de DateFormat y Date, puede formar una fecha u hora al llamar a format( ). Hay varias formas de este método. Aquí se muestra el que usaremos:

fi nal String format(Date f)

El argumento es un objeto de Date que habrá de desplegarse. El método devuelve una cadena que contiene la información formada.

Ejemplo

En el siguiente ejemplo se muestra cómo formar información de fecha y hora. Empieza con la creación de un objeto de Date. Esto captura la información de fecha y hora actuales. Luego da salida a las formas corta y larga de la fecha y la hora para la confi guración de región e idioma local (que es México en la salida de ejemplo).

// Despliega formatos de fecha y hora cortos y largos. import java.text.*;

class DemoFormatoFecha {

public static void main(String args[]) { Date fecha = new Date( );

DateFormat df;

df = DateFormat.getDateInstance(DateFormat.SHORT); System.out.println("Forma corta: " + df.format(fecha)); df = DateFormat.getDateInstance(DateFormat.LONG); System.out.println("Forma larga: " + df.format(fecha)); System.out.println( );

df = DateFormat.getTimeInstance(DateFormat.SHORT); System.out.println("Forma corta: " + df.format(fecha)); df = DateFormat.getTimeInstance(DateFormat.LONG); System.out.println("Forma larga: " + df.format(fecha)); }

}

Aquí se muestra la salida de ejemplo: Forma corta: 31/03/08

Forma larga: 31 de marzo de 2008 Forma corta: 11:35 PM

Forma larga: 11:35:45 PM CST

Opciones

Hay formas adicionales de getDateInstance( ) y getTimeInstance( ). Puede usar el formato y la confi guración de región e idioma local predeterminados al llamar a estas versiones:

static fi nal DateFormat getDateInstance( ) static fi nal DateFormat getTimeInstance( )

Puede especifi car el formato y la confi guración de región y de idioma local al llamar a estas versiones:

static fi nal DateFormat getTimeInstance(int fmt, Locale local) static fi nal DateFormat getDateInstance(int fmt, Locale local)

El parámetro fmt es como se describió antes. El parámetro local se usa para especifi car una confi guración de región y de idioma local que regirá la conversión. En el programa de ejemplo, puede especifi car explícitamente que la fecha habrá de formarse para Estados Unidos al sustituir esta llamada a getDateInstance( ):

df = DateFormat.getDateInstance(DateFormat, SHORT, Locale.US); Para formar la fecha para Japón, puede usar

df = DateFormat.getDateInstance(DateFormat, SHORT, Locale.JAPAN);

Para conocer un análisis de la creación de objetos de Locale, consulte Especifi que un idioma local usando Formatter.

objeto de DateFormat que puede usarse para ambos. Tiene estas tres versiones: static fi nal DateFormat getDateTimeInstance( )

static fi nal DateFormat getDateTimeInstance(int fmtFecha, int fmtHora)

static fi nal DateFormat getDateTimeInstance(int fmtFecha, int fmtHora, Locale local)

Aquí, fmtFecha especifi ca el formato de fecha y fmtHora especifi ca el formato de hora. La confi guración de región y de idioma local se especifi ca con local. Si no se usan argumentos, entonces se aplican las opciones predeterminadas del sistema. Por ejemplo, al insertar la siguiente secuencia en el programa de ejemplo se causa que se desplieguen la fecha y la hora actuales en los formatos predeterminados:

df = DateFormat.getDateTimeInstance( );

System.out.println("Forma predeterminada de fecha y hora: " + df.format(fecha)); He aquí una salida de ejemplo:

Forma predeterminada de fecha y hora: 1/04/2008 12:49:16 AM

Otra manera de formar la fecha y hora consiste en usar la clase java.text.SimpleDateFormat. Se trata de una subclase concreta de DateFormat. Una ventaja de esta clase es que le permite crear un patrón que describe cuáles piezas de la fecha u hora quiere desplegar. Esto le permite crear fácilmente formatos predeterminados de hora y fecha. (Consulte Forme fecha y hora con patrones empleando

SimpleDateFormat).

Por supuesto, también puede formar la fecha y hora empleando Formatter, o al llamar al método printf( ). (Consulte Forme fecha y hora empleando Formatter y Use printf( ) para desplegar datos formados).

In document Java soluciones de programación (página 168-171)