RE:parsear de tipo date a tipo string
A simple vista se me ocurren dos soluciones y las dos bastante sencillas.
Para la primera que se me ocurre no tienes que hacer mucho, si quieres usar eso de Locale.JAPAN... solo tendrías que hacer un simple replace de los guiones y cambiarlos por barras oblicuas. Algo así:
String fecha = "2008-08-14";
fecha = fecha.replace("-","/");
Eso haría que tu String fecha tuviese como valor "2008/08/14", así que esa solución sería realmente sencilla.
Por otro lado, una forma que a mi personalmente me gusta más porque así paso un poco de los DateFormat que no me hacen mucha gracia, es la siguiente:
String fecha = "2008-08-14";
int año = -1, mes = -1, dia = -1;
StringTokenizer tokenizer = new StringTokenizer(fecha, "-");
Calendar cal = Calendar.getInstance();
Date date = new Date();
año = Integer.parseInt(tokenizer.nextToken());
mes = Integer.parseInt(tokenizer.nextToken())-1; // Se le resta uno porque los meses se numeran desde el 0 (enero) hasta el 11 (diciembre)
dia = Integer.parseInt(tokenizer.nextToken());
cal.set(año, mes, dia);
date = cal.getTime();
Ese código te crea un objeto Date correspondiente al String "2008-08-14".
Te lo explico un poco por si no entiendes algunas cosas:
- Defino la cadena fecha, que ya la tendrás tú, ya que la obtienes de la base de datos.
- Defino unas variables numéricas donde voy a almacenar los números correspondientes al año, mes y día.
- Defino un objeto StringTokenizer, que sirve para dividir una cadena separada por un caracter o serie de caracteres determinados, que en este caso es el guión "-". Su uso es muy sencillo, inicializas el objeto con la cadena que quieres dividir y con el caracter que hace de separador, y posteriormente cada vez que invocas al método nextToken() te devuelve una "porción" de esa cadena.
- Defino también un objeto Calendar, que es una clase que sustituye en parte a la clase Date, que tiene la gran mayoría de sus métodos "deprecated" (obsoletos).
- Por último defino un objeto Date, que será nuestro resultado.
- En cada variable numérica meto el valor correspondiente, obteniendo cada "porción" de la cadena y convirtiéndola a Integer.
- Al meter el valor numérico del mes, es importante restarle uno, ya que los meses están numerados de 0 a 11, siendo enero el cero y diciembre el once.
- Luego inicializo el objeto Calendar en su constructor, como ves, de forma supersencilla.
- Y finalmente, el método getTime() del objeto Calendar nos devuelve un objeto Date con la fecha deseada.
Aunque te haya escrito una parrafada, el método no tiene ninguna complicación y no es excesivamente largo, pero te lo he desglosado lo máximo posible para que lo entendieses a la perfección.
Si tienes alguna duda en algo concreto no dudes en comentármelo y espero que al menos nos cuentes si has solucionado tu problema y qué solución has escogido.
Un saludo ; )