Я вообще не пытаюсь использовать текущее время. Я знаю о java-утилитах календаря и даты, но я не уверен, как создавать свои СОБСТВЕННЫЕ временные метки, не зависящие от текущего времени. Например, каждый объект будет иметь переменную «время прибытия» в формате чч:мм:сс. Но я понятия не имею, как это сделать. Должен ли я создавать свой собственный класс?
LocalTime
, либо созданным вами классом, в зависимости от ваших потребностей.
Это не совсем ясно, но я думаю, что вы ищете что-то вроде этого:
public class MyObject {
private static final DateTimeFormatter ARRIVAL_TIME_FORMATTER
= DateTimeFormatter.ofPattern("HH:mm:ss");
// Some instance variables
private LocalTime arrivalTime;
public MyObject(LocalTime arrivalTime) {
this.arrivalTime = arrivalTime;
}
public String getFormattedArrivalTime() {
return arrivalTime.format(ARRIVAL_TIME_FORMATTER);
}
}
Как было сказано в комментариях, используйте LocalTime
для времени суток. Не беспокойтесь о формате при сохранении времени прибытия в вашем объекте. Форматируйте его только тогда, когда вам нужно его отобразить. LocalTime.of
создает LocalTime
не связанное с текущим временем. Есть перегруженные версии, которые тоже занимают секунды.
Так что нет, не создавайте свой собственный класс меток времени. Используйте LocalTime
(или, в зависимости от требований, какой-либо другой класс) из java.time, современного API даты и времени Java.
Давайте посмотрим на краткий пример использования вышеуказанного класса MyObject
:
MyObject obj = new MyObject(LocalTime.of(23, 45));
System.out.println("Object arrived at " + obj.getFormattedArrivalTime());
Выход:
Object arrived at 23:45:00
В выводе (и только там) время было отформатировано в hh:mm:ss
, как вы и просили.
Редактировать:LocalTime
имеет точность до наносекунд. Бэзил Бурк прав в своем комментарии, что если вы знаете, что не хотите хранить более точную точность, чем целые секунды, легко обрезать входящее значение:
public MyObject(LocalTime arrivalTime) {
this.arrivalTime = arrivalTime.truncatedTo(ChronoUnit.SECONDS);
}
С одной стороны, я бы не стал так выбрасывать информацию, а метки времени, как правило, выигрывают от точности. С другой стороны, это также может сбивать с толку, если ваш объект хранит долю секунды, которую никто никогда не увидит. Вы должны будете решить сами.
Ссылки
LocalTime
Обратите внимание на более новый
java.time
API. Ответ на ваш вопрос будет во многом зависеть от того, чего вы хотите достичь. Если вам нужно рассчитать разницу между временами или упорядочить их каким-то определенным образом, возможно, вам лучше использоватьjava.time
API, поскольку эта функция уже существует.