studio reales proyectos programacion libro introducción incluye herramientas fundamentos fuente español código con avanzado aplicaciones java date calendar

java - reales - libro de android studio en español pdf



¿Cómo convertir una cadena de fecha en un objeto de fecha u calendario? (5)

Tengo una representación de String de una fecha de la que necesito crear un objeto de Date u Calendar . He Calendar API de Date y Calendar pero no he encontrado nada que pueda hacer esto aparte de crear mi propio método feo de análisis. Sé que debe haber una manera, ¿alguien sabe de una solución?


tl; dr

LocalDate.parse( "2015-01-02" )

java.time

Java 8 y java.time posteriores tienen un nuevo marco java.time que hace que estas otras respuestas java.time moda. Este marco está inspirado en Joda-Time , definido por JSR 310 , y ampliado por el proyecto ThreeTen-Extra . Ver el Tutorial .

Las antiguas clases empaquetadas, java.util.Date/.Calendar, son notoriamente problemáticas y confusas. Evítales.

LocalDate

Al igual que Joda-Time, java.time tiene una clase LocalDate para representar un valor de fecha solamente sin hora del día y sin zona horaria.

ISO 8601

Si su cadena de entrada está en el formato estándar ISO 8601 de yyyy-MM-dd , puede solicitar a esa clase que analice directamente la cadena sin necesidad de especificar un formateador.

Los formatos ISO 8601 se usan por defecto en java.time, para analizar y generar representaciones de cadena de valores de fecha y hora.

LocalDate localDate = LocalDate.parse( "2015-01-02" );

Formateador

Si tiene un formato diferente, especifique un formateador del paquete java.time.format . Puede especificar su propio patrón de formateo o dejar que java.time localice automáticamente, según corresponda, una configuración Locale especifique un idioma humano para la traducción y normas culturales para decidir problemas como el período versus la coma.

Patrón de formateo

Lea el documento de la clase DateTimeFormatter para obtener detalles sobre los códigos utilizados en el patrón de formato. Varían un poco de los antiguos patrones de clase anticuados java.text.SimpleDateFormat .

Observe cómo el segundo argumento para el método de parse es una referencia de método , sintaxis añadida a Java 8 y posterior.

String input = "January 2, 2015"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "MMMM d, yyyy" , Locale.US ); LocalDate localDate = LocalDate.parse ( input , formatter );

Volcado a la consola.

System.out.println ( "localDate: " + localDate );

localDate: 2015-01-02

Localizar automáticamente

O bien, en lugar de especificar un patrón de formato, deje java.time localizar por usted. Llame a DateTimeFormatter.ofLocalizedDate , y asegúrese de especificar la configuración Locale deseada / esperada en lugar de confiar en el valor predeterminado actual de la JVM, que puede cambiar en cualquier momento durante el tiempo de ejecución (!).

String input = "January 2, 2015"; DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate ( FormatStyle.LONG ); formatter = formatter.withLocale ( Locale.US ); LocalDate localDate = LocalDate.parse ( input , formatter );

Volcado a la consola.

System.out.println ( "input: " + input + " | localDate: " + localDate );

entrada: 2 de enero de 2015 | localDate: 2015-01-02


En breve:

DateFormat formatter = new SimpleDateFormat("MM/dd/yy"); try { Date date = formatter.parse("01/29/02"); } catch (ParseException e) { e.printStackTrace(); }

Vea SimpleDateFormat javadoc para más.

Y para convertirlo en un Calendar , hazlo:

Calendar calendar = Calendar.getInstance(); calendar.setTime(date);


La muy respetada biblioteca Joda Time también merece una visita. Esta es la base para la nueva API de fecha y hora que está diseñada para Java 7. El diseño es ordenado, intuitivo, bien documentado y evita gran parte de la torpeza de las clases java.util.Date / java.util.Calendar originales.

DateFormatter de Joda puede analizar un String a un Joda DateTime .



Prueba esto:

DateFormat.parse(String)