Dada uma data escrita em qualquer (deve lidar com tudo no mesmo programa) dos seguintes formatos, analise-a em um válido yyyy/mm/dd date
.
17th May 2012
March 14th, 2016
20 February 2014
September 14, 2017
Sunday, June 8, 2015
Regras
- As datas às vezes serão inválidas, ou seja. dia incorreto do mês ou número de meses em um ano, você deve lidar com os dois casos. Ao errar ou retornar um valor consistente de falsey, você escolhe. (No entanto, eles seguirão os formatos de modelo acima)
- Preenchimento por dias e meses menor que 10 deve ser usado para criar uma saída de dois dígitos.
- Os nomes dos meses sempre serão o nome completo, não abreviados para os três caracteres correspondentes.
- Você pode assumir que o ano sempre estará dentro do intervalo 0000-9999.
- Números negativos não precisam ser manipulados.
- Você pode criar um programa ou função completo para que a saída possa estar em qualquer formato, impressa no console ou retornada de uma função.
- A entrada sempre será uma cadeia de caracteres, a saída sempre deve ser uma cadeia de caracteres, se torna mais curto aceitá-la como um argumento único em uma matriz, por exemplo.
["17th May 2012"]
você pode fazê-lo e a saída pode ser a mesma["2012/05/17"]
- Você pode assumir que a ortografia na entrada estará correta.
BÔNUS: porque quem aqui não gosta de desafios;)
Se você também pode permitir os formatos de entrada The Fourteenth of March, 2016
ou March the Fourteenth, 2016
retirar um extra de 20 bytes do seu código com qualquer contagem de bytes final menor que 1, resultando em 1.
Aqui estão os números escritos completos para cada um dos dias para evitar qualquer confusão quanto à ortografia.
First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Nineth, Tenth, Eleventh, Twelfth, Thirteenth, Fourteenth, Fifteenth, Sixteenth, Seventeenth, Eighteenth, Nineteenth, Twentieth, Twenty First, Twenty Second, Twenty Third, Twenty Fourth, Twenty Fifth, Twenty Sixth, Twenty Seventh, Twenty Eighth, Twenty Nineth, Thirtieth, Thirty First
Casos de teste
INPUT | Output
17th May 2012 | 2012/05/17
March 14th, 2016 | 2016/03/14
20 February 2014 | 2014/02/20
September 14, 2017 | 2017/09/14
Sunday, June 8, 2015 | 2015/06/08
1st January 1918 | 1918/01/01
The Fourteenth of March, 2016 | 2016/03/14
March the Fourteenth, 2016 | 2016/03/14
November the Seventeenth, 2019 | 2019/11/17
The Thirtieth of April, 2016 | 2016/04/30
30 February 2014 | Invalid
September 99, 2017 | Invalid
Sunday, June8, 2015 | Invalid
The Thirty First of April, 2016 | Invalid
20 February 2014
são padrão apoiado em um monte de data-analisadores, mas 17th
e Sunday, June 8, 2015
são um pouco mais difíceis de analisar (dependendo do idioma).
Thursday, August 25, 2017
válido? Vejo envios ignorando a DOW.