Ontem eu estava apanhando para fazer formatação de data no Velocity (leia o que é Velocity?) para um template e antes de implementar uma POG com vários elseif´s, pedi uma ajuda para o Chris para saber se já existia alguma classe ou função disponível para formatação de datas em texto (em número já estava funcionando).
Danger!
Antecipo que qualquer coisa relacionada a Java ainda é uma novidade para mim, escrevi este post baseado na documentação da Sun (de uma classe) mas mesmo assim caso tenha alguma bobagem no conteúdo comentem, a internet está aí para possibilidades de correção e melhoria do conteúdo! 😉
O Chris me enviou um ótimo link de referência sobre a classe SimpleDateFormat do Java (me corrijam se estiver errado), que como o nome diz é para formatação de datas.
Não acho necessário a tradução da tabela, o funcionamento é simples: ao chamar a função para formatar data você segue os padrões indicado pela primeira coluna, que irá retornar o elemento indicado pela segunda coluna.
| Letter | Date or Time Component | Examples | 
|---|---|---|
| G | Era designator | AD | 
| y | Year | 1996;96 | 
| M | Month in year | July;Jul;07 | 
| w | Week in year | 27 | 
| W | Week in month | 2 | 
| D | Day in year | 189 | 
| d | Day in month | 10 | 
| F | Day of week in month | 2 | 
| E | Day in week | Tuesday;Tue | 
| a | Am/pm marker | PM | 
| H | Hour in day (0-23) | 0 | 
| k | Hour in day (1-24) | 24 | 
| K | Hour in am/pm (0-11) | 0 | 
| h | Hour in am/pm (1-12) | 12 | 
| m | Minute in hour | 30 | 
| s | Second in minute | 55 | 
| S | Millisecond | 978 | 
| z | Time zone | Pacific Standard Time;PST;GMT-08:00 | 
| Z | Time zone | -0800 | 
Tabela da classe SimpleDateFormat (site da Sun)
Dicas para formatação e exibição das datas
Ainda existe algumas dicas para selecionar como será exibido o resultado, por extenso, número ou texto. Segue uma explicação rápida e algumas dicas para formatar e exibir a data:
Texto
Para formatar o texto, se a letra do padrão se repetir 4 vezes ou mais, a forma completa é utilizada, caso contrário a forma abreviada é exibida (se existir).
Número
Para a formatação, o número de repetição da letra padrão (primeira coluna da tabela) indica o número mínimo de dígitos do número, as casas que "faltaram" são preenchidas com zeros.
Year (ano)
Para a formatação, 2 repetições da letra truncam o ano para 2 dígitos.
Mês
Se a letra repetir por 3 vezes ou mais é exibido como texto, caso contrário como número.
Exemplos
Acho que a formatação de data é complicada de explicar, mas com exemplos -> resultados prontos fica masi fácil, então segue uma tabelinha que utiliza os padrões SimpleDateFormat.
| Date and Time Pattern | Result | 
|---|---|
| "yyyy.MM.dd G "at" HH:mm:ss z" | 2001.07.04 AD at 12:08:56 PDT | 
| "EEE, MMM d, ""yy" | Wed, Jul 4, "01 | 
| "h:mm a" | 12:08 PM | 
| "hh "o""clock" a, zzzz" | 12 o"clock PM, Pacific Daylight Time | 
| "K:mm a, z" | 0:08 PM, PDT | 
| "yyyyy.MMMMM.dd GGG hh:mm aaa" | 02001.July.04 AD 12:08 PM | 
| "EEE, d MMM yyyy HH:mm:ss Z" | Wed, 4 Jul 2001 12:08:56 -0700 | 
| "yyMMddHHmmssZ" | 010704120856-0700 | 
Tabela da classe SimpleDateFormat (site da Sun)
É isso, espero ter ajudado! Para mais informações sobre formatação de data no Java leia a documentação completa da classe citada neste post.