Tengo un String representación de una fecha que necesito crear un Date o Calendar objeto. He mirado a través de Date y Calendar Api, pero no he encontrado nada que pueda hacer esto otro que el de crear mi propio feo método parse. Sé que debe haber una manera, ¿alguien sabe de una solución?

InformationsquelleAutor Aaron | 2008-09-04

5 Comentarios

  1. 126

    En breve:

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

    Ver SimpleDateFormat javadoc para más.

    Y convertirlo en un Calendar, hacer:

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    • ¿Qué pasa si la cadena original puede ser dd/MM/aa de aa/MM/dd?
    • Cristina también soy de las que se enfrenta el mismo problema. No sé qué formato se envía al servidor. Ahora @Matt Sheppard ¿tiene alguna sugerencia para que.
  2. 14

    tl;dr

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

    java.tiempo

    Java 8 y más tarde tiene un nuevo java.tiempo marco que hace que estas otras respuestas anticuado. Este marco está inspirado por Joda-El Tiempo, definido por JSR 310, y ampliada por el ThreeTen-Extra proyecto. Ver el Tutorial.

    El viejo incluido clases de java.util.Fecha/.Calendario, son muy problemático y confuso. Evitarlos.

    LocalDate

    Como Joda Tiempo, java.el tiempo tiene una clase LocalDate para representar una fecha valor solo sin la hora del día y sin zona horaria.

    ISO 8601

    Si la cadena de entrada es en el estándar ISO 8601 formato de yyyy-MM-dd, usted puede pedir que la clase directamente analizar la cadena sin necesidad de especificar un formateador.

    La ISO 8601 se utilizan los formatos por defecto en java.el tiempo, por tanto el análisis y la generación de representaciones de cadena de fecha y hora valores.

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

    Formateador

    Si usted tiene un formato diferente, especifique un formateador de la java.tiempo.formato paquete. Usted puede especificar su propio formato de patrón o dejar de java.de forma automática la hora de localizar como apropiado para un Locale la especificación de un lenguaje humano para la traducción y de las normas culturales para decidir cuestiones tales como el período de frente por comas.

    Formato patrón

    Leer el DateTimeFormatter clase doc para más detalles sobre los códigos utilizados en el modelo de formato. Que variar un poco de la vieja anticuada java.text.SimpleDateFormat clase de patrones.

    Nota cómo el segundo argumento de la parse es un método de método de referencia, sintaxis añadido a Java 8 y versiones posteriores.

    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 en lugar de especificar un formato de patrón, vamos a java.el tiempo de localizar para usted. Llame DateTimeFormatter.ofLocalizedDate, y asegúrese de especificar el deseado o esperado Locale en lugar de confiar en la JVM de la corriente de defecto, 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 );

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

    • Excelente reseña! Esta respuesta debería ser aceptado.
  3. 9

    La altamente considerado Joda la biblioteca de Tiempo de es también digno de una mirada. Esta es la base para la nueva fecha y hora de la api que es pencilled en Java 7. El diseño es limpio, intuitivo, bien documentado y evita una gran cantidad de la torpeza de la original java.util.Date /java.util.Calendar clases.

    Joda del DateFormatter puede analizar una Cadena a una Joda DateTime.

    • Mientras Joda Tiempo fue un enorme éxito como la primera fecha de la biblioteca de tiempo, la Joda del equipo de Tiempo ahora asesora a la migración a la java.tiempo marco.

Dejar respuesta

Please enter your comment!
Please enter your name here