Определить класс
Нет класса, связанного с Java, который бы представлял день недели в сочетании с временем дня.Для связанного класса потребуется дата.
Вам необходимо определить свой собственный такой класс, возможно, с именем DayOfWeekWithTime
.Этот класс будет иметь два поля-члена: объект DayOfWeek
и объект LocalTime
.Поиск переполнения стека для многих существующих сообщений в этих классах.
public class DayOfWeekWithTime {
// Member fields
DayOfWeek dayOfWeek ;
LocalTime localTime ;
// Constructor
public DayOfWeekWithTime ( DayOfWeek dayOfWeek , LocalTime localTime ) {
Objects.requireNonNull( dayOfWeek ) ;
Objects.requireNonNull( localTime ) ;
this.dayOfWeek = dayOfWeek ;
this.localTime = localTime ;
}
}
Перечисление DayOfWeek
соответствует стандарту ISO 8601, поэтому неделя определяется как понедельник-воскресенье.Это соответствует вашему желаемому порядку сортировки.Таким образом, вы можете отсортировать коллекцию DayOfWeekWithTime
объектов по этому полю.См. Collections.sort( list , comparator )
.Поиск Переполнение стека для многих существующих сообщений по теме сортировки объектов по определенному полю.
Для создания экземпляров DayOfWeekWithTime
объектов из строковых входов, как показано в Вопросе, разделите на символ ПРОБЕЛ.См. String::split
.Поиск переполнения стека для многих существующих сообщений на тему разделения строк.
Затем напишите подпрограмму для поиска перечисления DayOfWeek
для каждого из ваших трехбуквенных значений ввода.Вы можете написать серию if-else-if
.Или вы могли бы написать Map< String , DayOfWeek >
.
Для времени суток вы можете анализировать, используя LocalTime.parse
метод.При использовании 24-часовых часов с добавлением нуля к одиночным цифрам вам не нужно определять шаблон форматирования, поскольку классы java.time по умолчанию используют стандартные форматы ISO 8601 при синтаксическом анализе / генерации текста.Поиск переполнения стека для многих существующих сообщений по теме парсинга с классами java.time .
Do not use SimpleDateFormat
или связанные ужасные дата-времяклассы, которые сейчас унаследованы, такие как Date
или Calendar
.Используйте только java.time классы для работы с датой и временем.
О java.time
фреймворк java.time встроен в Java 8 и более поздние версии.Эти классы вытесняют старые классные устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
Вы можете обмениваться java.time объектами непосредственно с вашей базой данных.Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии.Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
ThreeTen-Extra Проект расширяет java.time дополнительными классами.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .