Это не совсем понятно, но я думаю, что вы ищете что-то вроде этого:
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, современного Java-API даты и времени.
Давайте рассмотрим краткий пример использования приведенного выше MyObject
класса:
MyObject obj = new MyObject(LocalTime.of(23, 45));
System.out.println("Object arrived at " + obj.getFormattedArrivalTime());
Вывод:
Объект прибыл в 23: 45: 00
На выходе (и только там) время было отформатировано в hh:mm:ss
как вы и просили.
Редактировать: LocalTime
имеет точность наносекунд.Василий Бурк прав в своем комментарии, что если вы знаете, что не хотите хранить более точную точность, чем целые секунды, легко усечь входящее значение:
public MyObject(LocalTime arrivalTime) {
this.arrivalTime = arrivalTime.truncatedTo(ChronoUnit.SECONDS);
}
С одной стороны, я бы колебалсявыбрасывать информацию, как это, и метки времени, как правило, выигрывают от точности.С другой стороны, это также может сбивать с толку, если ваш объект хранит долю секунды, которую никто никогда не видит.Вы должны будете решить сами.
Ссылки