Formato de salida de fecha con DateFormat

publicado por: Anonymous

Quiero tener el siguiente formato de fecha al realizar un System.out.println(): 31/03/2016.

Como me pasan el formato en un tipo String de esta forma "31-03-2016", utilizo las clases

import java.util.Date;

import java.text.DateFormat;

java.text.SimpleDateFormat;

para darle formato correcto, y utilizo esta forma:

SimpleDateFormat d = new SimpleDateFormat("dd-MM-yy");
Date date = d.parse("31-03-2016");
System.out.println(DateFormat.getDateInstance().format(date));

Pero me muestra: 31-03-2016

solución

Ya que el standard de tu sistema es con guiones, necesitas 2 SimpleDateFormat:

  • uno para parsear (convertir el String a Date)
  • otro para formatear (convertir Date a String en el formato deseado)

Tu codigo será algo así:

// el que parsea
SimpleDateFormat parseador = new SimpleDateFormat("dd-MM-yy");
// el que formatea
SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yy");

Date date = parseador.parse("31-03-2016");
System.out.println(formateador.format(date));

SALIDA

31/03/16

DEMO ONLINE


AÑADIDOS

De todas formas, no entiendo porque no funciona DateFormat.getDateInstance().format(this.date) y me muestra 31-mar-2016 ya que utilizo un Windows 7 64bits Español, y mi formato de fecha es: dd/MM/aaaa

Pasa porque usas Java 7 o superior, a partir de esta version se cambio la manera en que Locale.getDefault() funciona.

Para resumir, tienes que modificar no solo el formato de la region, sino tambien cambiar el modo en que el idioma muestra las fechas.

Puede comprobar el problema en este bug reportado

FUENTE (EN)

Respondido por: Anonymous

Leave a Reply

Your email address will not be published.