Василий Бурк прав, что вы предпочитаете java.time, современный Java-интерфейс даты и времени, а не Joda-Time.Если вы уже много используете Joda-Time и не хотите переходить на java.time прямо сейчас, вот решение Joda-Time для вашего вопроса. Редактировать: Я переписал код, чтобы учесть следующий комментарий от вас:
... Не могли бы вы помочь с определением времени окончания - часового пояса?Есть такой случай, когда интервал будет от «11:30 до 12:00».Сейчас текущее время 11:30, поэтому DateTimeZone вернет сегодняшнюю дату.Поскольку я пытаюсь сгенерировать строку для времени окончания, ее дата будет установлена на сегодняшнюю дату, но последняя строка должна иметь дату следующего дня, поскольку она ссылается на 12:00 утра.…
String interval = "04:00 PM - 04:30 PM";
String[] selectedTime = interval.split(" - ");
DateTimeFormatter parser = DateTimeFormat.forPattern("hh:mm a");
LocalDate today = new LocalDate(DateTimeZone.getDefault());
LocalTime tStart = parser.parseLocalTime(selectedTime[0]);
String startTime = today.toLocalDateTime(tStart).toString();
System.out.println("Start time: " + startTime);
При сегодняшнем запуске выдается:
Время запуска: 2019-06-12T16: 00: 00.000
Поскольку с 16:00 часов по 24-часовым часамЯ предположил, что это был результат, который вы хотели.Если вы хотите отформатировать без миллисекунд, просто отформатируйте LocalDateTime
, который вы получите так же, как вы форматируете dtStart
в своем вопросе.
Время окончания немного сложнее:
LocalTime tEnd = parser.parseLocalTime(selectedTime[1]);
String endTime;
if (tEnd.isBefore(tStart)) {
// Assume that end time is after midnight, that is, tomorrow
endTime = today.plusDays(1).toLocalDateTime(tEnd).toString();
} else {
// The normal case: both start and end times are today
endTime = today.toLocalDateTime(tEnd).toString();
}
System.out.println("End time: " + endTime);
Время окончания: 2019-06-12T16: 30: 00.000
Если вместо этого у нас было
String interval = "11:30 PM - 12:00 AM";
Время окончания: 2019-06-13T00: 00: 00.000
Joda-Time находится в режиме обслуживания
Цитата с домашней страницы Joda-Time:
Обратите внимание, чтоJoda-Time считается во многом «законченным» проектом.Никаких серьезных улучшений не планируется.При использовании Java SE 8 перейдите на java.time
(JSR-310).
(https://www.joda.org/joda-time/)
, даже если вы программируете для более старых Android (на уровне API)26), по крайней мере, для нового кода я бы предпочел зависимость от ThreeTenABP, а не от Joda-Time.