Задачи
August 8

Задача. Конвертация даты

Дата задана в виде строки в формате День Месяц Год, где:

  • День находится в наборе {"1st", "2nd", "3rd", "4th", ..., "30th", "31st"}.
  • Месяц указан в наборе {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}.
  • Год находится в диапазоне [1900, 2100].

Необходимо преобразовать строку даты в формат YYYY-MM-DD, где:

  • YYYY обозначает год из 4x цифр.
  • MM обозначает месяц из 2х цифр.
  • DD обозначает день из 2х цифр.

Примеры

  1. date = "18th Aug 2021"
    Output: "2021-08-18"
  2. date = "14th Apr 1990"
    Output: "1990-04-14"
  3. date = "3rd Sep 1994"
    Output: "1994-09-03"

Разбор

  1. Заведем константный массив строк, где будем хранить аббревиатуры месяцев.
  2. Исходную строку разделим на сегменты, которые разделены пробелами.
  3. Далее пройдемся по этим сегментам и проверим каждый из этих сегментов.
  4. Если сегмент содержится в массиве месяцев, то преобразуем его в числовое значение.
  5. Если сегмент содержит буквынный суффикс, значит это значения дня, также конвертируем его в числовое значение.
  6. Остается год, если мы не попали в первые два условия. Записываем его как есть.
  7. Выводим результат.

Детали реализации смотрите ниже.

Реализация

https://dotnetfiddle.net/V1Nx40