Конечно, это возможно с помощью Java 8 Date & Time API.
Похоже, у вас есть три поля: день недели, час дня и минута час. Обычно это можно проанализировать, используя DateTimeFormatter::ofPattern
со строкой форматирования EEE HH:mm
, но проблема в том, что MON
(во всех заглавных буквах) не является стандартным; вместо него должно быть Mon
.
Поэтому нам нужно собрать наш форматер, используя DateTimeFormatterBuilder
, инструктируя, что строка должна быть проанализирована без учета регистра:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("EEE HH:mm")
.toFormatter(Locale.ROOT);
Единственное, что нужно сделать, это проанализировать поля, используя
TemporalAccessor parsed = formatter.parse(elem);
Теперь parsed
содержит вышеупомянутые проанализированные поля.
К дате / времени
Конечно, вы не t есть , чтобы преобразовать это в фактическую дату. Есть много случаев использования, когда не требуется дата, а скорее день недели и время. Это пример .
Но если вы, например, хотите получить текущую дату и настроить ее так, чтобы она соответствовала данным вашего расписания, вы можете сделать что-то вроде этого:
TemporalAdjuster adj = TemporalAdjusters.nextOrSame(DayOfWeek.of(parsed.get(ChronoField.DAY_OF_WEEK)));
LocalDateTime now = LocalDate.now()
.atTime(LocalTime.from(parsed))
.with(adj);