Создание конкретных отметок времени для объектов? - PullRequest
0 голосов
/ 06 апреля 2019

Я вообще не пытаюсь использовать текущее время.Я знаю о календаре и дате использования Java, но я не уверен, как создавать свои собственные временные метки, не зависящие от текущего времени.Например, каждый объект будет иметь переменную «время прибытия» в формате чч: мм: сс.Но я понятия не имею, как это сделать.Должен ли я создать свой собственный класс?

1 Ответ

1 голос
/ 06 апреля 2019

Это не совсем понятно, но я думаю, что вы ищете что-то вроде этого:

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);
    }

С одной стороны, я бы колебалсявыбрасывать информацию, как это, и метки времени, как правило, выигрывают от точности.С другой стороны, это также может сбивать с толку, если ваш объект хранит долю секунды, которую никто никогда не видит.Вы должны будете решить сами.

Ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...