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
.
La clase DateFormat
tiene un método de parse
.
Consulte http://java.sun.com/j2se/1.4.2/docs/api/java/text/DateFormat.html para obtener más información.
Prueba esto:
DateFormat.parse(String)