Wenn ein Datum in einem der folgenden Formate geschrieben ist (muss alle im selben Programm verarbeiten), analysieren Sie es in ein gültiges yyyy/mm/dd date
.
17th May 2012
March 14th, 2016
20 February 2014
September 14, 2017
Sunday, June 8, 2015
Regeln
- Daten sind manchmal ungültig, dh. Falscher Tag für den Monat oder die Anzahl der Monate in einem Jahr, müssen Sie beide Fälle behandeln. Entweder indem Sie einen Fehler machen oder einen konsistenten Falsey-Wert zurückgeben, wählen Sie. (Sie bleiben jedoch bei den obigen Vorlagenformaten)
- Für eine zweistellige Ausgabe muss eine Auffüllung für Tage und Monate unter 10 verwendet werden.
- Monatsnamen sind immer der vollständige Name und werden nicht auf die drei Zeichen gekürzt.
- Sie können davon ausgehen, dass das Jahr immer im Bereich von 0000-9999 liegt.
- Negative Zahlen müssen nicht behandelt werden.
- Sie können ein vollständiges Programm oder eine vollständige Funktion erstellen, sodass die Ausgabe in einem beliebigen Format erfolgen, auf die Konsole gedruckt oder von einer Funktion zurückgegeben werden kann.
- Die Eingabe ist immer eine Zeichenfolge, die Ausgabe muss immer eine Zeichenfolge sein, wenn es kürzer wird, sie als einzelnes Argument in einem Array zu verwenden, z.
["17th May 2012"]
Sie können dies tun und die Ausgabe kann dieselbe sein["2012/05/17"]
- Sie können davon ausgehen, dass die Schreibweise in der Eingabe korrekt ist.
BONUS: weil wer hier keine Herausforderung mag;)
Wenn Sie es schaffen, auch die Eingabeformate von zuzulassen, The Fourteenth of March, 2016
oder March the Fourteenth, 2016
wenn Sie Ihrem Code zusätzliche 20 Bytes entziehen, wobei die Anzahl der endgültigen Bytes weniger als 1 beträgt, was zu 1 führt.
Hier finden Sie die vollständigen Zahlen für jeden Tag, um Verwechslungen bei der Rechtschreibung zu vermeiden.
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
Testfälle
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
sind Standard in vielen datum Parser unterstützt, aber 17th
und Sunday, June 8, 2015
sind ein bisschen schwieriger zu analysieren (abhängig von der Sprache).
Thursday, August 25, 2017
gültig? Ich sehe Einsendungen, die den DOW ignorieren.