我根本不尝试使用当前时间。我知道日历和日期java utils,但是我不确定如何创建不依赖于当前时间的OWN时间戳。例如,每个对象将具有hh:mm:ss格式的“到达时间”变量。但是我不知道该怎么做。我必须创建自己的课程吗?
答案 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);
}
一方面,我会犹豫不决地扔掉这样的信息,而时间戳往往会从精度中受益。另一方面,如果您的对象存储了没人见过的几分之一秒,也可能会造成混淆。您将需要自己决定。
链接
LocalTime