Java中是否有TimeSpan类

Java中是否有TimeSpan类,java,timespan,java.util.date,Java,Timespan,Java.util.date,我只是想知道java.util中是否需要时间跨度,以便定义这两个时间之间的时、分和秒数 从这个TimeSpan我们可以得到两次之间的时间间隔。像 TimeSpan getTimeSpan( Date before, Date after ){...} 或 有了这个TimeSpan我们可以在SimpleDateFormat中使用它 SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); format.format( timsSpan

我只是想知道
java.util
中是否需要时间跨度,以便定义这两个时间之间的时、分和秒数

从这个
TimeSpan
我们可以得到两次之间的时间间隔。像

TimeSpan getTimeSpan( Date before, Date after ){...}

有了这个
TimeSpan
我们可以在
SimpleDateFormat
中使用它

SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
format.format( timsSpan );

我不确定这是否已经在Java中实现,但我还没有发现。

SDK中的JDK 8日期时间库已经丰富,您可以使用

从JodaTime开始就可以了

时间间隔表示一段时间 两个瞬间之间的时间。间隔 包括开始瞬间和结束瞬间 不包括结尾。结束时刻 始终大于或等于 立即开始

间隔有固定的毫秒 期间这就是区别 在开始和结束瞬间之间。 持续时间单独表示 按可读持续时间。因此, 间隔是不可比较的。到 比较两个间隔的长度, 你应该比较它们的持续时间

间隔也可以转换为间隔 可读期。这代表了 起点和终点之间的差异 在字段方面的点,例如 年复一年

间隔是线程安全且不可变的


如果您正在寻找另一个更轻的版本,请查看我为在自己的Android应用程序中使用而编写的库

很抱歉,我没有关于其用法的任何文档,但它与对应的.net Timespan类非常相似。此外,还有一些单元测试,其中包含许多关于如何使用它的示例。

如果您使用的是Java 8(或更高版本),或者只是不想导入JodaTime(JodaTime的作者本人到Java.time):Java 8提供了该功能,请参阅此处的教程:

让我在这里引用Oracle教程:

LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(1960, Month.JANUARY, 1);

Period p = Period.between(birthday, today);
long p2 = ChronoUnit.DAYS.between(birthday, today);
System.out.println("You are " + p.getYears() + " years, " + p.getMonths() +
                   " months, and " + p.getDays() +
                   " days old. (" + p2 + " days total)");
该代码生成类似以下内容的输出:

You are 53 years, 4 months, and 29 days old. (19508 days total)

在Java8中,标准API中添加了一个适当的时间库(这在很大程度上基于JodaTime)

其中有两个类可用于指示时段:

  • 表示时间跨度的秒或纳秒长度
  • 这表示用户更友好的差异,存储为“x年和y月等”

  • 有关它们之间差异的详细解释,请参见

    我喜欢
    JodaTime
    间隔
    。但我想知道为什么在标准库中还没有出现这样的实用程序。由于这种用法非常普遍。可能joda time会被添加到标准库中,因此这种情况实际上会发生,请参阅下面我的答案和回答此问题的文档:很高兴看到这种情况发生,我在2011年就设想了:)
    You are 53 years, 4 months, and 29 days old. (19508 days total)