我的任务是写一个记录飞行数据的程序,所以我决定制作一个飞行物。
在此对象中是出发时间和到达时间。我不确定哪个对象最适合用于此,我希望将时间存储在24小时(hh:mm)时间内,并能够以小时和分钟计算飞行持续时间(hh:mm) ,我看过文档,我遇到了3个不同的时间对象。
1 java.util.Date
long
。 2 java.sql.Date
long
进行操作。 3 java.sql.Time
Time(long)
构造函数。对我来说不是很有用,因为这意味着我需要在创造时间之前将每次转换为多头。 TL; DR:
是否有任何库可以创建一个看起来像
的时间(pseudocode):
Object time = new Constructor(23,11)
这不是“弃用”所以我不必先转换为long。或者,我是否必须自己制作Object
?
答案 0 :(得分:5)
顾名思义,java.sql
旨在与SQL数据库连接,在其他情况下您可能不应该使用它。
如果您可以使用java 8,我建议您使用java.time.LocalTime。通过这门课程,您不必担心日期信息和时区。您可以非常轻松地创建实例:
LocalTime.of(17, 18); // the train I took home today LocalTime.parse("10:15:30"); // From a String
如果你不能,你应该使用java.util.Date;但是,没有什么可以禁止你对它进行子类化,以便在不考虑日期的情况下更容易操纵时间。
答案 1 :(得分:5)
java.time
在Java 8+中,您可以使用java.time.Duration
(通常也可能使用java.time
)。像,
public static void main(String[] args) {
Duration d = Duration.ofHours(23).plusMinutes(11);
System.out.println(d);
}
如果您未使用Java 8+
,则可以使用Joda-Time。
答案 2 :(得分:2)
如果你想要操纵时间,而不是重新发明一些轮子,你应该使用完整的实现,例如Java 8中的java.time.LocalTime或joda-time:http://www.joda.org/joda-time/。< / p>
您的存储年,月和日信息有什么危害?在我看来,你的蠢事总会发生在特定的时间点。无论如何,jode-time有一个没有日期概念的LocalTime类。我只是想知道你将如何处理从一天开始到另一天结束的过滤器。