Преобразовать Строку System.in.next() в LocalDate

Суть такова, пользователь вводит дату в любом из форматов dd.mm.yyyy, dd.mm.yy, dd/mm/yyyy, dd/mm/yy и на выходе эта строка преобразуется в LocalDate

Как получить из строки LocalDate я понимаю, но никак не получается сделать преобразование сразу для всех типов.


Ответы (1 шт):

Автор решения: Zhenyria

Допустим, вы получаете на вход строку String date. Можно поступить так:

1. Проверьте строку: date.contains('.'). Это поможет поделить строки на разделяющиеся слэшем и разделяющиеся точкой.

2. В зависимости от шага 2 сделайте String[] dateParts = date.split(".") или date.split("/").

3. Вы получили массив, состоящий из года, месяца и дня. Дальше вы можете сделать так:

LocalDate curDate = LocalDate.of(
Integer.parseInt(dateParts[2].length == 2 ? "20" + dateParts[2] : dateParts[2]), 
Integer.parseInt(dateParts[1]),
Integer.parseInt(dateParts[0]));

Проверка на длину строки года нужны, чтобы получить строку вида 2019.

Вот и всё. Вы получили нужную дату.

→ Ссылка