【问题标题】:Which object is best for doing time manipulation哪个对象最适合进行时间操作
【发布时间】:2016-02-24 09:24:40
【问题描述】:

我的任务是编写一个记录飞行数据的程序,所以我决定制作一个飞行对象。

在这个对象中是一个出发时间和一个到达时间。我不确定哪个对象最适合用于此目的,我想将时间存储为 24 小时 (hh:mm) 时间,并能够以小时和分钟计算飞行持续时间 (hh:mm) ,我查看了文档,遇到了 3 个不同的时间对象。

1 java.util.Date

  • 没用,因为它包含了太多的年月等信息,这是一个很基础的制作图表的程序,大部分数据操作使用longs。

2java.sql.Date

  • 不包含以我想要的相同比例处理时间并使用longs 进行操作的构造函数。

3java.sql.Time

  • 似乎有正确类型的构造函数,它是“已弃用”。而且我确定我在某处读到这意味着以后的版本将不再支持它,并且使用它们是不好的做法。这让我再次使用Time(long) 构造函数。对我来说不是很有用,因为这意味着我需要在安排时间之前将每次转换为多头。

tl;博士:

是否有任何库可以创建一个看起来像这样的时间

(pseudocode):
Object time = new Constructor(23,11) 

这不是“已弃用”,所以我不必先转换为 long。或者,我是否必须自己制作Object

【问题讨论】:

  • 你试过你的伪代码了吗? IIRC,Java 为您做推广。
  • 不太清楚你的意思。就像我无法使用这些值制作时间对象而不获得分数,尽管它是“已弃用”

标签: java datetime


【解决方案1】:

java.time 在 Java 8+ 中

在 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 早期版本中的 Joda-Time

如果你不使用Java 8+,你可以使用Joda-Time

【讨论】:

  • java.time 基本上是 Joda-Time。与其他选项相比,Joda-Time 太棒了,它基本上被复制到了主 SDK 中。 java.time/Joda-Time 有不可变对象和各种其他的东西,让你的程序员更难皇家!@#$ 东西。
  • @MatthewGunn - 它们相似,但不完全相同。见the differences here
【解决方案2】:

顾名思义,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 SE 8 Date and Time提取

如果你不能,你应该使用 java.util.Date ;但是,没有什么能阻止您对它进行子类化,以便更轻松地操纵时间而不考虑日期。

【讨论】:

  • 谢谢你的回答,我已经注意到我需要更多地关注我所在的包裹,而不是仅仅点击任何与时间有关的东西。以后我会记住的^_^。
【解决方案3】:

如果您想操纵时间而不是重新发明许多轮子,您应该使用成熟的实现,例如 Java 8 中的 java.time.LocalTime 或 joda-time:http://www.joda.org/joda-time/

存储年月日信息有什么危害?在我看来,您的飞行总是会在特定的时间点发生。尽管如此,jode-time 有一个没有日期概念的 LocalTime 类。我只是想知道您将如何处理从某一天开始到另一天结束的航班。

【讨论】:

  • "我只是想知道您将如何处理从一天开始到另一天结束的航班。" - 他们没有。这是大学的课程。所有航班只有同一天的起飞时间(以小时和分钟为单位)和到达时间。由于您指出的原因,将您的时间存储在几小时和几分钟内并不是很合乎逻辑,但这是教授想要的。 :(
猜你喜欢
  • 2022-12-04
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 2011-03-27
  • 2018-05-19
  • 1970-01-01
相关资源
最近更新 更多