2015-08-04 8 views
5
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd HH:mm:ss"); 
    System.out.println(sdf.format(new Date())); 
    SimpleDateFormat sdff = new SimpleDateFormat("MMM d HH:mm:ss"); 
    System.out.println(sdff.format(new Date())); 

uscita è:Spazio invece di condurre 0 Data Java

Aug 04 10:58:55 
    Aug 4 10:58:55 

voglio uscita sia:

Aug 04 10:58:55 
    Aug 4 10:58:55 

Tutte le idee?

Ma se il giorno ha due numeri Ho bisogno di avere uno spazio:

Aug 14 10:58:55 
    Aug 4 10:58:55 
+0

current out put è lo stesso di quello che ti aspetti ... quindi nessun problema .. Se ti preoccupi dell'allineamento, è solo un problema di formattazione. –

+0

@RuchiraGayanRanaweera Kami sta cercando un po 'di "imbottitura da spazio bianco" in un formattatore di date. Dai un'occhiata più da vicino. – dotvav

+0

Non ho bisogno di '4 agosto', ottenendo' 4 agosto', uno spazio invece di due. @dotvav Non creerà due spazi se ci sono due numeri? – Shepard

risposta

2

Se siete preoccuparsi di spazio bianco è sufficiente aggiungere uno spazio bianco al formattatore.

"MMM d HH:mm:ss" 

Esempio:

Calendar calendar=Calendar.getInstance(); 
int day=calendar.get(Calendar.DAY_OF_MONTH); 
SimpleDateFormat sdf; 
if(day>9){ 
    sdf = new SimpleDateFormat("MMM dd HH:mm:ss"); 
}else{ 
    sdf = new SimpleDateFormat("MMM d HH:mm:ss"); 
} 
System.out.println(sdf.format(new Date())); 

Fuori messo:

Aug 4 15:50:25 
+2

Non funziona se ci sono due numeri in un giorno, quindi sarà "11 agosto", mentre ho bisogno di "11 agosto". La formattazione non mostra che permettimi di modificare la mia domanda. – Shepard

+0

@Kami non funzionerà in entrambi i casi. –

+1

Vedo la tua modifica, intelligente, non ho idea di come non ci avessi pensato. – Shepard

2

AFAIK nessun modello in SimpleDateFormat di farlo.

Il modo più semplice è il più semplice. Controlla la lunghezza della corda e aggiungi uno spazio aggiuntivo se necessario. Poiché tutti gli altri articoli hanno una lunghezza fissa, non è necessario un controllo più complicato.

SimpleDateFormat sdff = new SimpleDateFormat("MMM d HH:mm:ss"); 
if (sdff.length == 14) { 
    sdff = sdff.substring(0,4) + " " + sdff.substring(4); 
} 

Se lo vuoi fantasia (aka RegExp), è una specie di un po 'più robusto, ma non vale la pena IMO

SimpleDateFormat sdff = new SimpleDateFormat("MMM d HH:mm:ss"); 
sdff = sdff.replaceAll(" (\\d) ", " $1 "); 
2

Partenza questo metodo di SimpleDateFormat classe:

public StringBuffer format(Date date, StringBuffer toAppendTo, 
           FieldPosition pos) { ...} 

e fornire un'implementazione personalizzata FieldPosition.

+0

Hai qualche link che spiega come funziona 'FieldPosition'? Ho sempre trovato difficile capire. – SJuan76

+0

Purtroppo no. Sarebbe felice se qualcuno lo trovasse e postasse qui. – ka4eli

Problemi correlati