Desenvolvimento - C#

Formatando Datas com string.Format

Veja neste artigo como podemos formatar datas em diversos formatos com o método string.Format()

por Pedro Henrique Barbosa Fernandes



Neste artigo vou mostrar como podemos formatar um objeto de data DateTime em diversos formatos usando o String.Format.

Quando trabalhamos com data, às vezes é necessário o uso de formatos de data customizados, como por exemplo, uma data no formato mm/yyyy de uma fatura, uma data de um chamado aberto sem os segundos, ou ainda uma data por extenso para o rodapé de um relatório.

Para criar os formatos de data customizados, usamos algumas letras específicas onde cada letra significa uma parte da data. y (ano), M (mês), d (dia), h (hora 12), H (hora 24), m (minuto), s (segundo), f (fração de segundo), F (fração de segundo, mostrando zeros após a unidade inteira ex: 0.2000), t (P.M ou A.M) e z (time zone).

// Criando uma data 09/03/2008 16:05:07.123
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

String.Format("{0:y yy yyy yyyy}", dt);  // "8 08 008 2008"           ano
String.Format("{0:M MM MMM MMMM}", dt);  // "3 03 Mar Março"   mês
String.Format("{0:d dd ddd dddd}", dt);  // "9 09 Dom Domingo"    dia
String.Format("{0:h hh H HH}", dt);  //     "4 04 16 16"                 hora 12/24
String.Format("{0:m mm}", dt);  //          "5 05"                          minuto
String.Format("{0:s ss}", dt);  //          "7 07"                             segundo
String.Format("{0:f ff fff ffff}", dt);  // "1 12 123 1230"           fração de segundo
String.Format("{0:F FF FFF FFFF}", dt);  // "1 12 123 123"     fração de segundo sem zero
String.Format("{0:t tt}", dt);  //          "P PM"                         A.M. ou P.M.
String.Format("{0:z zz zzz}", dt);  //      "-6 -06 -06:00"           time zone

Quando usamos o separados de data "/" e o separador de tempo ”:" eles serão substituídos pelo separador de data e de tempo definidos na cultura atual com o DateTimeForma­tInfo.DateSeparator e o DateTimeForma­tInfo.TimeSeparator.

// a cultura alemã substitui o separador de data "/" pelo "."
String.Format("{0:d/M/yyyy HH:mm:ss}", dt); // "9/3/2008 16:05:07" - Português Brasileiro (pt-BR)
String.Format("{0:d/M/yyyy HH:mm:ss}", dt); // "9.3.2008 16:05:07" - Alemã (de-DE)

Um abraço e até o próximo artigo.

Pedro Henrique Barbosa Fernandes

Pedro Henrique Barbosa Fernandes