Muitas vezes em nossas aplicações precisamos formatar textos, datas, números entre outros dados. A partir destas necessidades temos a opção de utilizar algumas classes utilitárias de Java para a formatação e obter o resultado desejado. Alguns exemplos de classes utilitárias para formatação: para números a classe NumberFormat, para data SimpleDateFormat e outras mais.

Este post tem por finalidade apresentar um tipo de formatação básico do Java que foi fortemente herdado de C, portanto qualquer semelhança é mera herança. 😀

Para isso vou utilizar método stático format da classe String para realizar a formatação de uma data, que quero como resultado final no seguinte formato: “dd/MM/yyyy”.

import java.util.Date;

/**
 * Formatação de data com <code>String.format</code>
 * @author Ednei Parmigiani Júnior
 */
public class MainClass {

	public static void main(String[] args) {
		Date date = new Date(System.currentTimeMillis());
		String dataFormatada = String.format("%1$td/%1$tm/%1$tY", date);

		System.out.println(dataFormatada);
	}

}

Ao executar este código teremos o seguinte resultado no console: “23/04/2013

Na linha 11, esta todo o processo da formatação: “%1$td/%1$tm/%1$tY”. Mas você deve estar se perguntando, o que significa isso? É bem simples!

  • Em “%1$td/” informo o seguinte. Extraia do primeiro(%1) argumento que é do tipo “t”(time/tempo) o valor de “d”(day/dia) e concatena o resultado com “/”.
  • Em “%1$tm/” informo o seguinte. Extraia do primeiro argumento que é do tipo “t”(time) o valor de “m”(month/mês) e concatena o resultado com “/”.
  • Por fim em “%1$tY” informo o seguinte. Extraia do primeiro argumento que é do tipo “t”(time) o valor de “Y”(year/ano).

OBS: Onde eu descrevo “primeiro argumento”, estou referenciando ao valor da variável “date”.

Algumas considerações:
Esta é uma maneira trabalhosa, primitiva e perigosa para formatação, porem de desempenho superior os de classes utilitárias citadas no início do post. Quanto ao perigo, exponho esta informação porque a própria documentação de Java diz o seguinte: “Formatadores não são necessariamente seguro para o acesso de vários segmentos/ thread. A segurança do segmento/thread é opcional e é de responsabilidade dos usuários dos métodos dessa classe.” Portanto, muito cuidado ao utilizar este tipo de formatação em métodos que possuem concorrência de acesso.

Para main informações acesse a documentação da oracle.

Por enquanto é isso, até o próximo post.

Um comentário para “Formatação de data com String Format

  1. I simply want to say I’m newbie to blogging and site-building and absolutely enjoyed you’re web-site. Most likely I’m planning to bookmark your blog . You actually come with excellent writings. Appreciate it for sharing your blog.

Deixe um comentário

Campos obrigatórios são marcados *

Post Navigation