2012-11-14 4 views
5

ho una stringa in Java, che è una data, ma è formattato come:Facendo una stringa che è una data e formattazione in Java

ho bisogno di riformattare per assomigliare 02/12/2012 come può essere fatto.

Con questo codice Continuo a tornare [email protected]

Di seguito è riportato il mio codice ..

public static void main(String[] args) { 

    // Make a String that has a date in it, with MEDIUM date format 
    // and SHORT time format. 
    String dateString = "02152012"; 

    SimpleDateFormat input = new SimpleDateFormat("ddMMyyyy"); 
    SimpleDateFormat output = new SimpleDateFormat("dd/MM/yyyy"); 
    try { 
     output.format(input.parse(dateString)); 
    } catch (Exception e) { 

    } 
    System.out.println(output.toString()); 
} 
+2

non c'è un numero mese 15 – Alex

+1

D'accordo con Alex, e anche se questo è pensato per essere 02122012, che cosa hai provato? –

+3

@BlueBullet: hai modificato la domanda originale * assumendo * è solo un errore di battitura. Preferirei sentirlo dall'OP. –

risposta

9

Usa SimpleDateFormat.

SimpleDateFormat input = new SimpleDateFormat("ddMMyyyy"); 
SimpleDateFormat output = new SimpleDateFormat("dd/MM/yyyy"); 
System.out.println(output.format(input.parse("02122012"))); // 02/12/2012 

Come suggerito da Jon Skeet, è anche possibile impostare il TimeZone e Locale sul SimpleDateFormat

SimpleDateFormat englishUtcDateFormat(String format) { 
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.ENGLISH); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
    return sdf; 
} 

SimpleDateFormat input = englishUtcDateFormat("ddMMyyyy"); 
SimpleDateFormat output = englishUtcDateFormat("dd/MM/yyyy"); 
System.out.println(output.format(input.parse("02122012"))); // 02/12/2012 
+0

cool solution +1 – Juvanis

+1

Suggerirei di specificare il fuso orario come UTC e le impostazioni internazionali come inglese, ed eventualmente anche di impostare esplicitamente il calendario. –

+0

non ha funzionato ... Ho ottenuto [email protected] se faccio un output.toString() – techsjs2012

0

Questo è il problema con il codice nella tua domanda modificato:

System.out.println(output.toString()); 

Si sta stampando il , non il risultato della chiamata format. Infatti, sei ignorando il risultato della chiamata format:

output.format(input.parse(dateString)); 

basta cambiare a:

System.out.println(output.format(input.parse(dateString))); 

O più chiaramente:

Date parsedDate = input.parse(dateString); 
String reformattedDate = output.format(parsedDate); 
System.out.println(reformattedDate); 
Problemi correlati