Есть ли простой или элегантный способ получить только часть времени (даты / часы / минуты / секунды / миллисекунды) части даты Java (или календаря, для меня это на самом деле не имеет значения)? Я ищу хороший способ отдельно рассмотреть дату (год / месяц / день) и время суток, но, насколько я могу судить, я застрял при доступе к каждому полю отдельно.
Я знаю, что мог бы написать свой собственный метод для индивидуального захвата интересующих меня полей, но я бы делал это как метод статической утилиты, который уродлив. Кроме того, я знаю, что объекты Date и Calendar имеют точность в миллисекундах, но в любом случае я не вижу способа доступа к компоненту в миллисекундах.
Редактировать: Мне было непонятно: использование одного из методов Date :: getTime () или Calendar :: getTimeInMillis не очень полезно для меня, так как они возвращают количество миллисекунд с момента эпоха (представленная этой датой или календарем), которая фактически не отделяет время суток от остальной информации.
@ Ответ Джерико, я думаю, самый близкий, но определенно это то, что мне все равно придется свернуть в метод, который я сам пишу. Это не совсем то, к чему я стремлюсь, поскольку в возвращаемое значение в миллисекундах по-прежнему включаются часы, минуты и секунды, хотя, возможно, я мог бы заставить его работать для моих целей.
Я до сих пор считаю каждый компонент отдельным , хотя, конечно, это не так. Вы можете записать время как число миллисекунд с произвольной контрольной даты, или вы можете написать то же самое время, что и year/month/day hours:minutes:seconds.milliseconds
.
Это не для отображения. Я знаю, как использовать DateFormat
для создания красивых строк дат.
Редактировать 2: Мой первоначальный вопрос возник из небольшого набора служебных функций, которые я написал, например:
- Проверка, представляют ли два
Date
дату-время в один и тот же день;
- Проверка, находится ли дата в диапазоне, заданном двумя другими датами, но иногда проверка включительно, а иногда нет, в зависимости от компонента времени.
Есть ли у Joda Time такая функциональность?
Редактировать 3: @ Вопрос Джона относительно моего второго требования, просто чтобы уточнить: второе требование является результатом использования моих дат для представления иногда целых дней - где компонент времени вообще не имеет значения - и иногда представляют дату-время (то есть, IMO, самое точное слово для чего-то, что содержит year/month/day
и hours:minutes:seconds:...
).
Когда Date представляет целый день, его части времени равны нулю (например, «компонент времени» Date - полночь), но семантика диктует, что проверка диапазона выполняется включительно в дату окончания. Поскольку я просто оставляю эту проверку до Date :: before и Date :: after, я должен добавить 1 день к дате окончания - отсюда особый случай, когда компонент времени дня в Date равен нулю.
Надеюсь, это не прояснило ситуацию.