quarta-feira, 23 de outubro de 2013

Formatando Datas com string.Format
 
Conteúdo desenvolvido utilizando a linguagem C#
 
 
Neste artigo irei demostrar como podemos formatar utilizando o tipo de dados DateTime utilizando  o String.Format.
 
Em algum momento você irá utilizar o tipo de dados DateTime, quer por passas via código um valor desse tipo ou obter de uma tabela no seu banco de dados. Neste caso, existem algumas formas de alterarmos o valor padrão de datas.
 
Entretanto, no exemplo de hoje iremos utilizar a classe String.Format. Esta classe nos permitirá personalizar a saída padrão da data.
 
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);
  • z (time zone).
 

Existem alguns formatos que o .net já possuí pré-definido para se ajustar conforme as configurações de localidade do sistema operacional:

 

Especificador

Tipo

Formato

Saída
(Ex.: Tipo double 1.2345)

Saída
(Ex.: Tipo int -12345)

c

Currency (Moeda)

{0:c}

£1.23

-£12,345.00

d

Decimal

{0:d}

System.FormatException

-12345

e

Exponencial / Formatação científica

{0:e}

1.234500e+000

-1.234500e+004

f

Ponto fixo

{0:f}

1.23

-12345.00

g

Generalizada

{0:g}

1.2345

-12345

n

Numérica

{0:n}

1.23

-12,345.00

r

Arredondado

{0:r}

1.23

System.FormatException

x

Hexadecimal

{0:x4}

System.FormatException

ffffcfc7



Especificador

Tipo

Formato

Saída
(Ex.: Tipo double 1234.56)

0

Completar com zeros

{0:00.000}

1234.560

#

Máscarar um número

{0:#.##}

1234.56

.

Posicionar o separador de decimal

{0:0.0}

1234.6

,

Posicionar o separador de milhar

{0:0,0}

1,235

%

Porcentagem

{0:0%}

123456%

specificador
Tipo
Saída
(Ex.: 19 de Setembro de 1980 14:30:59)
d
Data curta
19/09/1980
D
Data long
19 Setembro 1980
t
Hora Curta
14:30
T
Hora Longa
14:30:59
f
Data e Hora
19 Setembro 1980 14:30
F
Data e Hora completo
19 Setembro 1980 14:30:59
g
Data de Hora padrão
19/09/1980 14:30
G
Data de Hora padrão longo
19/09/1980 14:30:59
M
Dia / Mês
19 Setembro
r
Sex, 19 Set 1980 14:30:59 GMT
s
Sortable data/hora
1980-09-19T14:30:59
u
Hora Universal, Timezone local
1980-09-19 14:30:59Z
Y
Mês / Ano
Setembro 1980
 
Especificador
Tipo
Saída
(Ex.: Setembro 19, 1980 14:30:59)
dd
Dia
19
ddd
Nome curto do dia
Sex
dddd
Nome completo do dia
Sexta-feira
hh
2 dígitos para a hora
02
HH
2 dígitos para a hora (24 horas)
14
mm
2 dígitos para o minuto
30
MM
Mês
09
MMM
Nome curto do Mês
Set
MMMM
Nome do Mês
Setembro
ss
Segundos
59
tt
AM/PM
PM
yy
2 dígitos do Ano
80
yyyy
4 dígitos do Ano
1980
:
Separador, ex. {0:hh:mm:ss}
14:30:59
/
Seperator, ex. {0:dd/MM/yyyy}
08/06/1970
 
Vejam alguns exemplos de como você poderá utilizar os tipos mostrados anteriormente:
 
Abaixo irei mostrar alguns exemplos de uso de Format, que poderão ajudar na leitura rápida: 
int Valor = 803;
string Formato1 = String.Format("{0:C}", Valor); //Moeda
string Formato2 = String.Format("{0:C8}", Valor); //Moeda com 8 casas decimais
string Formato3 = String.Format("{0:D}", Valor); //Decimal
string Formato4 = String.Format("{0:D15}", Valor); //Decimal com 15 posições
string Formato5 = String.Format("{0:E}", Valor); //Exponencial XXX.XXXe+xxx
string Formato6 = String.Format("{0:F}", Valor); //Ponto Fixo
string Formato7 = String.Format("{0:G}", Valor); //Formato Geral ou Científico
string Formato8 = String.Format("{0:N}", Valor); //Numérico
string Formato9 = String.Format("{0:N7}", Valor); //Numérico com 7 casas decimais
string Formato10 = String.Format("{0:X}", Valor); //Representação Hexadecimal
string Formato11 = String.Format("{0:x}", Valor); //Representação Hexadecimal também
long CNPJ = 05662546000135;
string CNPJFormatado = String.Format(@"{0:00\.000\.000\/0000\-00}", CNPJ); //Formatar de Long para CNPJ
long RG = 305617853;
string RGFormatado = String.Format(@"{0:00\.000\.000\-0}", RG);