gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:02:10 29 4
gpt4 key购买 nike

我根本不想使用当前时间。我知道日历和日期 java utils,但我不确定如何创建不依赖于当前时间的自己的时间戳。例如,每个对象都有一个 hh:mm:ss 格式的“到达时间”变量。但我不知道如何做到这一点。我必须创建自己的类吗?

最佳答案

这并不完全清楚,但我认为你正在追求这样的东西:

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 日期和时间 API java.time 中的 LocalTime (或根据要求使用其他类)。

让我们看一个使用上述 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 的精度为纳秒。 Basil Bourque 在他的评论中是正确的,如果您知道您不想存储比整秒更精细的精度,那么很容易截断传入值:

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

一方面,我不愿意像这样丢弃信息,而时间戳往往受益于精度。另一方面,如果您的对象存储了无人看到的一小部分秒,也可能会令人困惑。您必须自己做出决定。

链接

关于java - 为对象创建特定的时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55545098/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com