[RESOLVIDO] Formatar Calendar

Olá,

Preciso formatar uma data/hora no formato linux (MMddHHmmyyyy.ss). O problema é que quando eu faço :

int hour = calendar.get( Calendar.HOUR_OF_DAY );

se a hora for menor que 10 ele retorna a hora com 1 campo, ignorando o 0 ou seja, “H”, porém o format do linux é “HH”. Será que tem como eu retornar com o zero caso a hora seja menor que 10 ? Isso ocorre pra todos os campo, hora/minuto/segundos/dia/mes.
Exemplo:

23/06/2010 07:23:45

hour = 07.

da uma olhadinha na classe SimpleDateFormat

abrassss

SimpleDateFormat é mesmo a solução. Ele permite que você use máscaras na formatação, como a que você usou de exemplo.

Para esse seu caso, utilize o codigo:

DecimalFormat fr = new DecimalFormat("00");
fr.format(hour);

[]s

Com simpleDateFormat não da certo. Não consegui formata-lo no padrão Linux. Porém, o exemplo do DecimalFormat deu certo.

Valeu!

O SimpleDateFormat não formata cada parte em separado (primeiro, hora, depois minuto, depois segundo e assim por diante). Ele formata um objeto Date todo de uma vez, segundo um padrão específico:

public static void main(String[] args) throws Exception {                          
	// teste com vários formatos diferentes                                        
	SimpleDateFormat f1 = new SimpleDateFormat("dd 'de' MMMM 'de' yyyy, HH:mm:ss");
	SimpleDateFormat f2 = new SimpleDateFormat("dd/MM/yy - HH:mm:ss Z");           
	SimpleDateFormat f3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");             
	SimpleDateFormat f4 = new SimpleDateFormat("EEEE, dd 'de' MMMM 'de' yyyy");    
	SimpleDateFormat f5 = new SimpleDateFormat("HH:mm:ss.SSS z");                  
	SimpleDateFormat f6 = new SimpleDateFormat("EEE dd MMM, HH:mm");               
                                                                                   
	Calendar now = Calendar.getInstance();                                         
	                                                                               
	System.out.println(f1.format(now.getTime()));                                  
	System.out.println(f2.format(now.getTime()));                                  
	System.out.println(f3.format(now.getTime()));                                  
	System.out.println(f4.format(now.getTime()));                                  
	System.out.println(f5.format(now.getTime()));                                  
	System.out.println(f6.format(now.getTime()));                                  
}

Imagine fazer o mesmo só usando DecimalFormat.

Mais no formato que ele quer provavelmente nao vai poder:
MMddHHmmyyyy.ss

nao testei mais axho que nao vai ser valido.

[quote=Sad7]Mais no formato que ele quer provavelmente nao vai poder:
MMddHHmmyyyy.ss

nao testei mais axho que nao vai ser valido.[/quote]
Apesar de ser um formato totalmente estranho (não sei da onde veio isso nem pra que servirá) ele pode usá-lo com SimpleDateFormat sim.

SimpleDateFormat fr = new SimpleDateFormat("MMddHHmmyyyy'.'ss"); Date now = new Date(); System.out.println(fr.format(now.getTime()));

boa, funciona msm, :smiley: … fica muito mais facil msm com SimpleDateFormat.