.NET

24 abr, 2009

Formatação padrão para DateTime

Publicidade

Um dos métodos mais práticos da plataforma .NET é o ToString(String) do objeto DateTime.
Com ele podemos formatar a data sem usar outras classes utilitárias,
apenas com a própria instancia do objeto de data, dessa forma: data.ToString(“dd/MM/yyyy”).

Ao imprimir a data atual com Console.Write(DateTime.Now) temos um resultado mais ou menos assim na tela: 07/04/2009 23:17:25. Isso acontece porque o Console utiliza o método ToString() de qualquer objeto para transformá-lo em caracteres e imprimir na tela. O objeto a ser impresso nesse caso é um DateTime que por sua vez utiliza internamente ToShortDateString() + ” ” + ToLongTimeString().

Quando se está trabalhando com muitas datas – geração de relatórios,
por exemplo – fica trabalhoso e feio ficar replicando a mesma
formatação de data no código, como: data.ToString(“dd-MM-yyyy [HH:mm]”) diversas vezes. Não seria mais fácil padronizar a saída de data? Isso é fácil!

var customCulture = new CultureInfo("pt-BR");
customCulture.DateTimeFormat.ShortDatePattern = "dd-MM-yyyy";
customCulture.DateTimeFormat.LongTimePattern = "[HH:mm]";

Thread.CurrentThread.CurrentCulture = customCulture;
Thread.CurrentThread.CurrentUICulture = customCulture;

O que eu fiz aí foi criar uma cultura customizável com base na
pt-BR. Depois mudei as formatações de data curta e hora longa –
justamente as formatações utilizadas por padrão pelo DateTime. Por último, é só atribuir essa cultura à thread corrente, o que geralmente abrange toda nossa aplicação.

Agora o método ToString() do DateTime vai utilizar a formatação “dd-MM-yyyy” para data (ToShortDateString) e “[HH:mm]” para hora (ToLongTimeString). Dessa forma, podemos imprimir novamente no console que teremos um resultado diferente: 07/04/2009 [23:17].

Código repetitivo dificulta mudanças, gera erros e retrabalho. Portanto devemos sempre buscar alternativas quando isso acontece.