Это вдохновлено одним из вопросов Даунгоата в Песочнице, где я предложил, чтобы он включил 31 апреля как день Пи для людей, которые используют формат день / месяц, только для того, чтобы он сообщил мне, что 31 апреля нет!
Если задана строка даты в формате месяц / день , которая может быть недопустимой, выведите правильную дату с помощью ролловера. (Сначала перенесите месяц, затем перенесите день).
Примеры:
«15/43» - это читается как 43-й день 15-го месяца. Сначала мы переносим месяц на следующий год, поэтому у нас получается 3 (март). Теперь, поскольку в марте только 31 день, мы переносим дополнительные дни на апрель, поэтому мы выводим фактическую дату как «4/12» (12 апреля).
«3/16» - это действительная дата (16 марта). Верни как есть.
«12/64» - Ах, как много приятных воспоминаний о 64 декабря ... Декабрь имеет 31 день, январь - 31 день, так что я на самом деле имею в виду «2/2» (2 февраля).
«19/99» - во-первых, 19 становится 7 (июль). В июле 31 день, в августе 31 день, в сентябре 30 дней, поэтому выходное значение равно «10/7» (7 октября).
«1/99999» - год имеет 365 дней. 99999 (mod 365) = 354. 354 дня года - «12/20» .
«9999999/10» - очевидно, 9999999 (мод. 12) = 3, так что это «3/10» (10 марта).
Критерии:
Месяц ввода - это целое число> 0. День ввода - это целое число> 0. Год не нужно указывать, так как для этого не существует високосных лет.
Обновить:
Поскольку я думаю, что это слишком упростит задачу, функции календаря, такие как функции в классе Java Calendar , запрещены. Функции разбора и форматирования даты все еще разрешены.
1/99999
должен дать, 12/19
я думаю.