2012-06-28 26 views
14

Tengo un String que contiene el resultado de toString() llamado en una instancia de java.util.Date. ¿Cómo puedo analizar este valor de nuevo a un objeto Date?Analizando una fecha de java desde toString()

docs El Java dicen que toString() convierte este objeto Date a un String de la forma:

dow mon dd hh:mm:ss zzz yyyy 

pero por supuesto no hay ninguna etiqueta formato como "dow" o "mon".

Podría alguien ayudarme con este problema. Tenga en cuenta que, lamentablemente, la llamada toString() está en un código fuera de mi control.

+2

posible duplicado de [cómo analizar la salida de la nueva fecha(). ToString()] (http : //stackoverflow.com/questions/4713825/how-to-parse-output-of-new-date-tostring) –

Respuesta

27

Debe usar SimpleDateFormat en lugar de date.toString(). De esta forma, tendrá control sobre el formato que desea usar.

Date date = new Date(); 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //Or whatever format fits best your needs. 
String dateStr = sdf.format(date); 

Entonces usted tiene la cadena que puede analizar de nuevo a una fecha ...

Date date2 = sdf.parse(dateStr); 

Para utilizar el formato toString() que necesita para establecer la configuración regional SimpleDateFormat al Inglés y utilizar el formato : "EEE MMM dd HH:mm:ss Z yyyy".

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", new Locale("us"));` 
+0

Mm .. como dije, no tengo control sobre toString(), ya que está hecho por Struts. De todos modos, configurar el entorno local EN hace el truco, así que gracias. Solo tengo que notar que la cadena de formato correcta es "EEE MMM dd HH: mm: ss zzz yyyy", habías olvidado el Mes. – prepetti

+0

Edité la respuesta para tenerlo. :) –

-1

Suppsoe obtiene la Cadena de "dateString";

SimpleDateFormat sdf = new SimpleDateFormat("dow mon dd hh:mm:ss zzz yyyy"); 

Date date = sdf.parse("dateString"); 
+0

Esto no funciona y genera una excepción.La llamada al constructor correcta es: 'SimpleDateFormat sdf = new SimpleDateFormat (" EEE MMM dd HH: mm: ss Z aaaa ", nueva configuración regional (" nos "));' – sizzle

0

Primero echar un vistazo a todos los formatos de fecha proporcionadas por Java Date Formats. Y puede usar la clase SimpleDateFormat para hacer lo que quiera.

public class DateFormatTest 
    { 
     public DateFormatTest() 
     { 
     String dateString = // in "dow mon dd hh:mm:ss zzz yyyy" format 

     SimpleDateFormat dateFormat = new SimpleDateFormat("dow mon dd hh:mm:ss zzz yyyy"); 
     Date convertedDate = dateFormat.parse(dateString); 

     System.out.println("Converted string to date : " + convertedDate); 
     } 

     public static void main(String[] argv) 
     { 
     new DateFormatTest(); 
     } 
    } 
    } 
Cuestiones relacionadas