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