Data una data scritta in qualsiasi (deve gestire tutti nello stesso programma) dei seguenti formati, analizzalo in un valido yyyy/mm/dd date.
17th May 2012
March 14th, 2016
20 February 2014
September 14, 2017
Sunday, June 8, 2015
Regole
- Le date a volte non saranno valide, ad es. giorno errato per il mese o il numero di mesi in un anno, è necessario gestire entrambi i casi. Scegliendo un errore o restituendo un valore di falsità coerente. (Aderiranno comunque ai formati di modello sopra)
- Per creare un output a due cifre è necessario utilizzare un'imbottitura per giorni e mesi inferiori a 10.
- I nomi dei mesi saranno sempre il nome completo, non abbreviati nelle loro controparti a tre caratteri.
- Puoi presumere che l'anno sarà sempre compreso nell'intervallo999999.
- Non è necessario gestire numeri negativi.
- È possibile creare un programma o una funzione completi in modo che l'output possa essere in qualsiasi formato, stampato sulla console o restituito da una funzione.
- L'input sarà sempre una stringa, l'output deve sempre essere una stringa, se lo rende più breve accettarlo come singolo argomento in un array, ad es.
["17th May 2012"]puoi farlo e l'output può essere lo stesso["2012/05/17"] - Puoi presumere che l'ortografia nell'input sia corretta.
BONUS: perché a chi qui non piace una sfida;)
Se riesci a consentire anche i formati di input The Fourteenth of March, 2016o March the Fourteenth, 2016puoi rimuovere 20 byte extra dal tuo codice con un numero di byte finale inferiore a 1 risultante in 1.
Ecco i numeri scritti completi per ciascuno dei giorni per evitare qualsiasi confusione sull'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
Casi test
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 2014sono di default supportato in un sacco di data-parser, ma 17the Sunday, June 8, 2015sono un po 'più difficile da analizzare (a seconda della lingua).
Thursday, August 25, 2017valido? Vedo osservazioni ignorando il DOW.
