为对象创建特定的时间戳?

时间:2019-04-06 01:31:23

标签: java oop time

我根本不尝试使用当前时间。我知道日历和日期java utils,但是我不确定如何创建不依赖于当前时间的OWN时间戳。例如,每个对象将具有hh:mm:ss格式的“到达时间”变量。但是我不知道该怎么做。我必须创建自己的课程吗?

1 个答案:

答案 0 :(得分:1)

目前还不是很清楚,但是我认为您是在追求这样的东西:

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。有重载的版本也需要几秒钟。

因此,不要创建自己的时间戳记类。使用Java.time(现代的Java日期和时间API)中的LocalTime(或根据其他类的要求)。

让我们看一个使用上述MyObject类的简短示例:

    MyObject obj = new MyObject(LocalTime.of(23, 45));
    System.out.println("Object arrived at " + obj.getFormattedArrivalTime());

输出:

  

对象于23:45:00到达

在输出中(仅在此处),时间已按照您的要求格式化为hh:mm:ss

编辑LocalTime的精度为纳秒。 Basil Bourque在他的评论中是正确的,如果您知道不希望存储比整秒更好的精度,则很容易截断输入值:

    public MyObject(LocalTime arrivalTime) {
        this.arrivalTime = arrivalTime.truncatedTo(ChronoUnit.SECONDS);
    }

一方面,我会犹豫不决地扔掉这样的信息,而时间戳往往会从精度中受益。另一方面,如果您的对象存储了没人见过的几分之一秒,也可能会造成混淆。您将需要自己决定。

链接