Как правильно распарсить дату и время?
Возникла такая проблемка, у меня есть строка с датой и временем в следующем формате:
dd.MM.yyyy hh:mm
Хочу воспользоваться Period.betveen, распарсить эту строку и получить на выходе, сколько у меня осталось дней до этой даты. Без разницы, в днях выведет или в часах.
Проблема в том, что эта дата просто так не парсится, я так понимаю, потому что в строке указана и дата и время. Можно ли как то распарсить и применить эту строку без разделения ее отдельно на дату и отдельно на время?
Вот пример моего кода:
LocalDate localDateNow = LocalDate.now();
// соответственно, дата в String date лежит в формате dd.MM.yyyy hh:mm
Period period = Period.between(localDateNow, LocalDate.from(LocalDateTime.parse(date)));
return period.getDays();
Ответы (2 шт):
просто парсим с кастомным форматтером
@Test
void test() {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
LocalDate d0 = LocalDate.parse("20.08.2020 23:59", fmt);
LocalDate d1 = LocalDate.parse("21.08.2020 00:59", fmt);
Period p = Period.between(d0, d1);
System.out.printf("%s between [%s and %s)\n", p, d0, d1);
assertEquals(1, p.getDays());
}
ахтунг: в Вашем формате часы будут только до 12, для 24 часов нужны большие HH.
Если я правильно вас понял, вам нужно:
- Получить некоторую дату в формате dd.MM.yyyy hh:mm
- Получить кол-во дней между текущей датой и датой полученной на предыдущем шаге.
Полагаю, как сделать первый шаг, вы и так легко разберетесь. Для второго шага используйте ChronoUnit.DAYS.between(startDate, endDate);