2016-03-11 19 views
7

"Mar 10, 2016 6:30:00 PM" Questa è la mia data e voglio convertirla in "10 mar 2016". Posso usare SimpleDateFormat in Android e non sto ottenendo il modello esatto per convertirlo. Plz help and thanx in anticipoCome convertire Data in particolare formato in Android?

String date="Mar 10, 2016 6:30:00 PM"; 
SimpleDateFormat spf=new SimpleDateFormat("Some Pattern for above date"); 
Date newDate=spf.format(date); 
spf= new SimpleDateFormat("dd MMM yyyy"); 
String date = spf.format(newDate); 

Questa procedura funziona? Se sì, per favore qualcuno può darmi un modello di quel formato ??? Grazie in anticipo.

+0

Sì, mi piacerebbe, Ma quale modello dovrei dare lì ?? –

risposta

13

Questo viene modificato il codice che si dovrebbe usare:

String date="Mar 10, 2016 6:30:00 PM"; 
SimpleDateFormat spf=new SimpleDateFormat("MMM dd, yyyy hh:mm:ss aaa"); 
Date newDate=spf.parse(date); 
spf= new SimpleDateFormat("dd MMM yyyy"); 
date = spf.format(newDate); 
System.out.println(date); 

Usa hh per ore al fine di ottenere ora corretta

+0

Grazie ha funzionato :) –

1

È necessario parse() la stringa in data e quindi formattarlo nel formato desiderato. È possibile utilizzare il formato MMM dd, yyyy HH:mm:ss a per analizzare la stringa specificata.

Ecco il frammento di codice:

public static void main (String[] args) throws Exception 
{ 
    String date = "Mar 10, 2016 6:30:00 PM"; 
    SimpleDateFormat spf = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a"); 
    Date newDate = spf.parse(date); 
    spf = new SimpleDateFormat("dd MMM yyyy"); 
    String newDateString = spf.format(newDate); 
    System.out.println(newDateString); 
} 

uscita:

10 Mar 2016 
4

Ho creato un metodo per questo problema. Abbiamo semplicemente bisogno di passare Formato data attuale, formato data richiesto e Data stringa.

private String changeDateFormat(String currentFormat,String requiredFormat,String dateString){ 
    String result=""; 
    if (Strings.isNullOrEmpty(dateString)){ 
     return result; 
    } 
    SimpleDateFormat formatterOld = new SimpleDateFormat(currentFormat, Locale.getDefault()); 
    SimpleDateFormat formatterNew = new SimpleDateFormat(requiredFormat, Locale.getDefault()); 
    Date date=null; 
    try { 
     date = formatterOld.parse(dateString); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    if (date != null) { 
     result = formatterNew.format(date); 
    } 
    return result; 
} 

Questo metodo restituirà la stringa di data nel formato richiesto. Nel vostro metodo di chiamata caso sarà:

String date = changeDateFormat("MMM dd, yyyy hh:mm:ss a","dd MMM yyyy","Mar 10, 2016 6:30:00 PM"); 
1

Per ragioni di completezza, ecco la versione moderna. Questo è per chiunque stia leggendo questo che usa Java 8 o versioni successive o è felice con una libreria esterna (buona e futura).

String date = "Mar 10, 2016 6:30:00 PM"; 
    DateTimeFormatter parseFormatter 
      = DateTimeFormatter.ofPattern("MMM d, uuuu h:mm:ss a", Locale.ENGLISH); 
    DateTimeFormatter newFormatter 
      = DateTimeFormatter.ofPattern("d MMM uuuu", Locale.ENGLISH); 
    date = LocalDateTime.parse(date, parseFormatter).format(newFormatter); 
    System.out.println(date); 

Questa stampa il desiderato

10 Mar 2016 

Si prega di notare l'uso del locale esplicita per entrambi DateTimeFormatter oggetti. "Mar" e "PM" sono entrambi in inglese, quindi né l'analisi né la formattazione funzioneranno a meno che non vengano utilizzate alcune impostazioni locali di lingua inglese. Dando esplicitamente stiamo rendendo il codice abbastanza robusto da comportarci come previsto anche su computer e JVM con altre impostazioni locali predefinite.

Per utilizzare quanto sopra su Android, utilizzare ThreeTenABP, vedere How to use ThreeTenABP in Android Project. Su altri Java 6 e 7 usare ThreeTen Backport.

Problemi correlati