A ordem de formatação das datas é uma das questões mais complexas e divisivas que o mundo enfrenta atualmente. Alguns de nós argumentam veementemente que Mês / Dia / Ano é apropriado, considerando que é assim que dizemos datas em voz alta. Outros proclamam em voz alta que Dia / Mês / Ano é o melhor, porque coloca os termos em ordem crescente da duração que representam.
Já é suficiente. Os computadores podem resolver essa disputa de maneira simples e justa. Seu código, uma função ou programa completo, terá uma sequência de datas delimitada por barras, por exemplo 12/1/2015. Observe que este é o formato exato, sem zeros à esquerda e com um ano de quatro dígitos no final.
- Se for definitivamente Mês / Dia / Ano, por exemplo
10/31/1998, produza uma representação de texto dessa data neste formato exato, com o nome completo do mês, dia e ano:October 31, 1998 - Se é definitivamente Dia / Mês / Ano, por exemplo
25/12/1989, a saída do mesmo tipo de representação de texto:December 25, 1989. - Se for ambíguo, seja Mês / Dia / Ano ou Dia / Mês / Ano, produza uma data que resolva a ambiguidade combinando as duas datas possíveis da seguinte maneira:
- Criar um novo nome do mês, tendo a primeira metade do nome do anteriormente mês e anexar a segunda metade da tarde mês. Por meses com duração ímpar, a primeira metade recebe a letra extra. Para ser explícito, as primeiras metades dos meses são
Janu,Febr,Mar,Apr,Ma,Ju,Ju,Aug,Septe,Octo,Nove, eDecee as segundas metades são, portantoary,uary,ch,il,y,ne,ly,ust,mber,ber,mber, ember. - Calcule o dia calculando a média dos dois dias possíveis, tomando a palavra quando a média não for um número inteiro.
- Emita a representação de texto desta data, por exemplo
10/8/2011, para , saídaAugber 9, 2011.
- Criar um novo nome do mês, tendo a primeira metade do nome do anteriormente mês e anexar a segunda metade da tarde mês. Por meses com duração ímpar, a primeira metade recebe a letra extra. Para ser explícito, as primeiras metades dos meses são
Se a data de entrada não puder ser Mês / Dia / Ano ou Dia / Mês / Ano (por exemplo, 13/13/2013 ou mesmo 2/30/2002), qualquer comportamento é aceitável. Este código de golfe, o código mais curto vence!
Casos de teste:
10/31/1998 dá October 31, 1998
25/12/1989 dá December 25, 1989
10/8/2011 dá Augber 9, 2011
8/5/1957 dá Maust 6, 1957
9/12/2012 (por incrível que pareça) September 10, 2012
1/1/2000 dá January 1, 2000
without leading zeroes and with a four-digit year at the endimplicayear >= 1000
