java.util.Conversión de formato de fecha aaaa-mm-dd a mm-dd-aaaa

Resuelto user182944 asked hace 11 años • 8 respuestas

Tengo un java.util.Dateen formato yyyy-mm-dd. quiero que este en el formatomm-dd-yyyy

A continuación se muestra la utilidad de muestra que probé para esta conversión:

// Setting the pattern
SimpleDateFormat sm = new SimpleDateFormat("mm-dd-yyyy");
// myDate is the java.util.Date in yyyy-mm-dd format
// Converting it into String using formatter
String strDate = sm.format(myDate);
//Converting the String back to java.util.Date
Date dt = sm.parse(strDate);

Aún así, el resultado que obtengo no está en el formatomm-dd-yyyy .

Por favor déjeme saber cómo formatear un java.util.Datedesde yyyy-mm-ddamm-dd-yyyy

user182944 avatar Aug 28 '13 13:08 user182944
Aceptado

Datees un contenedor para el número de milisegundos desde la época Unix (00:00:00 UTC del 1 de enero de 1970).

No tiene concepto de formato.

Java 8+

LocalDateTime ldt = LocalDateTime.now();
System.out.println(DateTimeFormatter.ofPattern("MM-dd-yyyy", Locale.ENGLISH).format(ldt));
System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH).format(ldt));
System.out.println(ldt);

Salidas...

05-11-2018
2018-05-11
2018-05-11T17:24:42.980

Java 7-

Deberías utilizar el Backport ThreeTen

Respuesta original

Por ejemplo...

Date myDate = new Date();
System.out.println(myDate);
System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(myDate));
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(myDate));
System.out.println(myDate);

Salidas...

Wed Aug 28 16:20:39 EST 2013
08-28-2013
2013-08-28
Wed Aug 28 16:20:39 EST 2013

Ninguno de los formatos ha cambiado el Datevalor subyacente. Este es el propósito de la DateFormatters

Actualizado con ejemplo adicional

Por si acaso el primer ejemplo no tuviera sentido...

Este ejemplo utiliza dos formateadores para formatear la misma fecha. Luego uso estos mismos formateadores para analizar los Stringvalores nuevamente a Dates. El análisis resultante no altera la forma en que Dateinforma su valor.

Date#toStringes sólo un basurero de su contenido. No puedes cambiar esto, pero puedes formatear el Dateobjeto como quieras.

try {
    Date myDate = new Date();
    System.out.println(myDate);

    SimpleDateFormat mdyFormat = new SimpleDateFormat("MM-dd-yyyy");
    SimpleDateFormat dmyFormat = new SimpleDateFormat("yyyy-MM-dd");

    // Format the date to Strings
    String mdy = mdyFormat.format(myDate);
    String dmy = dmyFormat.format(myDate);

    // Results...
    System.out.println(mdy);
    System.out.println(dmy);
    // Parse the Strings back to dates
    // Note, the formats don't "stick" with the Date value
    System.out.println(mdyFormat.parse(mdy));
    System.out.println(dmyFormat.parse(dmy));
} catch (ParseException exp) {
    exp.printStackTrace();
}

¿Qué salidas...?

Wed Aug 28 16:24:54 EST 2013
08-28-2013
2013-08-28
Wed Aug 28 00:00:00 EST 2013
Wed Aug 28 00:00:00 EST 2013

Además, tenga cuidado con los patrones de formato. Echa un vistazo más de cerca SimpleDateFormatpara asegurarte de que no estás usando los patrones incorrectos;)

MadProgrammer avatar Aug 28 '2013 06:08 MadProgrammer
SimpleDateFormat("MM-dd-yyyy");

en lugar de

SimpleDateFormat("mm-dd-yyyy");

porque MM points Month,mm points minutes

SimpleDateFormat sm = new SimpleDateFormat("MM-dd-yyyy");
String strDate = sm.format(myDate);
newuser avatar Aug 28 '2013 06:08 newuser

'M' (Capital) representa el mes y 'm' (Simple) representa minutos

Algún ejemplo desde hace meses.

'M' -> 7  (without prefix 0 if it is single digit)
'M' -> 12

'MM' -> 07 (with prefix 0 if it is single digit)
'MM' -> 12

'MMM' -> Jul (display with 3 character)

'MMMM' -> December (display with full name)

Algún ejemplo por minutos.

'm' -> 3  (without prefix 0 if it is single digit)
'm' -> 19
'mm' -> 03 (with prefix 0 if it is single digit)
'mm' -> 19
darshakat avatar Aug 28 '2013 06:08 darshakat