Я пытаюсь разобрать три числа, например [2, 10, 2014]
в LocalDate
, используя новый API даты и времени Java 8.
Все звучит относительно просто, не так ли? Ну, возможно, нет.
Дополнительным ограничением является то, что мне нужно учитывать языковой стандарт, так как, например, в голландском и американском форматах даты используются разные форматы.
Единственный ввод, который у меня есть, это три числа и локаль, а вывод должен быть правильно сформированной датой в виде LocalDate
.
Я полагаю, что мне понадобятся следующие шаги:
- Получите преобразователь от
Locale
, который может читать три числа. - С помощью конвертера преобразуйте эти три числа в
LocalDate
.
Я немного огляделся, особенно в классе DateTimeFormatter
, но, похоже, он хочет, чтобы форматы дня, месяца и года были явно переданы, что для меня не вариант.
Как преобразовать три числа (представляющие день, месяц и год в любом порядке) в LocalDate
?
Примеры:
Голландский формат:
Locale locale = new Locale("nl");
List<String> inputs = Arrays.asList("2", "10", "2014");
//output should equal
LocalDate.of(2014, 10, 2);
Американский формат:
Locale locale = Locale.ENGLISH;
List<String> inputs = Arrays.asList("10", "2", "2014");
//output should equal
LocalDate.of(2014, 10, 2);
Также имейте в виду, что я говорю о концепции чисел, но они должны быть представлены в виде строк, чтобы также приспособиться к языкам, которые используют другие символы Unicode, чем цифры 0–9 для своих чисел.
java.time
, теперь я не говорю, что его нельзя перенести на Java 7, но давайте оставим его на Java 8. - person skiwi   schedule 02.10.2014