yyyy name month example change java date format

name - Java: excepción de fecha no analizable



java date format string (1)

Lo que básicamente estás haciendo aquí es confiar en Date#toString() que ya tiene un patrón fijo. Para convertir un objeto de Date Java en otro patrón de cadena legible por humanos, necesita SimpleDateFormat#format() .

private String modifyDateLayout(String inputDate) throws ParseException{ Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z").parse(inputDate); return new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(date); }

Por cierto, la excepción de "fecha no analizable" aquí solo puede ser lanzada por SimpleDateFormat#parse() . Esto significa que el inputDate no está en el patrón esperado "yyyy-MM-dd HH:mm:ss z" . Probablemente deba modificar el patrón para que coincida con el patrón real de inputDate .

Actualización: Bueno, hice una prueba:

public static void main(String[] args) throws Exception { String inputDate = "2010-01-04 01:32:27 UTC"; String newDate = new Test().modifyDateLayout(inputDate); System.out.println(newDate); }

Esto imprime correctamente:

03.01.2010 21:32:27

(Estoy en GMT-4)

Actualización 2: según su edición, realmente obtuvo una ParseException en eso. La parte más sospechosa sería la zona horaria de UTC . ¿Es esto realmente conocido en su entorno Java? ¿Qué versión de Java y qué versión de SO estás usando? Compruebe TimeZone.getAvailableIDs() . Debe haber una UTC en el medio.

Al intentar transformar el formato de fecha, obtengo una excepción: fecha no analizable y no sé cómo solucionar este problema.

Estoy recibiendo una cadena que representa una fecha de evento y me gustaría mostrar esta fecha en un formato diferente en la GUI.

Lo que estaba tratando de hacer es lo siguiente:

private String modifyDateLayout(String inputDate){ try { //inputDate = "2010-01-04 01:32:27 UTC"; Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z").parse(inputDate); return new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(date); } catch (ParseException e) { e.printStackTrace(); return "15.01.2010"; } }

De todos modos la linea

String modifiedDateString = originalDate.toString();

es tonto Me gustaría obtener una cadena de fecha en el siguiente formato:

dd.MM.yyyy HH: mm: ss

y el ejemplo de la cadena de entrada es el siguiente:

2010-01-04 01:32:27 UTC

¿Alguien sabe cómo convertir la fecha de ejemplo (String) anterior en un formato de String dd.MM.yyyy HH: mm: ss?

¡Gracias!

Edición: arreglé el formato de fecha de entrada incorrecto pero todavía no funciona. Arriba está el método pegado y debajo está la imagen de la pantalla de la sesión de depuración.

texto alt http://img683.imageshack.us/img683/193/dateproblem.png

# Actualización corrí

String[] timezones = TimeZone.getAvailableIDs();

y hay una cadena UTC en la matriz. Es un problema extraño.

Hice un truco sucio que funciona:

private String modifyDateLayout(String inputDate){ try { inputDate = inputDate.replace(" UTC", ""); Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(inputDate); return new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(date); } catch (ParseException e) { e.printStackTrace(); return "15.01.2010"; } }

Pero aún así, preferiría transformar la entrada original sin cortar la zona horaria.

Este código está escrito para el teléfono Android utilizando JDK 1.6.