我们是否拥有Java中的TimeSpan类?

我只是想知道在java.util是否需要TimeSpan,以便我可以定义在这两个时间之间有多less小时,几分钟和几秒钟。

从这个TimeSpan我们可以有两次之间的时间间隔。 喜欢

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

要么

 long timeSpan = System.currentTimeMillis(); // ... long job timeSpan = System.currentTimeMillis() - timeSpan; TimeSpan ts = new TimeSpan(timeSpan); 

通过这个TimeSpan我们可以在SimpleDateFormat使用它。

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

我不确定这是否已经在Java中实现,但尚未被我发现。

来自JodaTime的Interval将会..

时间间隔表示两个时刻之间的时间段。 间隔包括开始时刻和排除结束。 结束时刻总是大于或等于开始时刻。

间隔有一个固定的毫秒持续时间。 这是开始时刻和结束时刻之间的区别。 持续时间由ReadableDuration单独表示。 因此,间隔是不可比的。 要比较两个区间的长度,您应该比较它们的持续时间。

间隔也可以转换为ReadablePeriod。 这表示在诸如年和日等字段方面的起点和终点之间的差异。

区间是线程安全的和不可变的。

在Java 8中,一个适当的时间库已经被添加到标准的API(这很大程度上是基于JodaTime的)。

在这里有两个类可以用来表示一段时间:

  1. Duration ,指示一个秒或纳秒的时间长度。
  2. 表示更友好的差异的期间,存储为“x年和y月等”。

Java教程中可以find它们之间差异的详细解释

如果你正在寻找一个替代的打火机版本,看看这个库,我写我的Android应用程序使用。 https://github.com/ashokgelal/samaya

对不起,我没有任何关于它的用法的文档,但是它和.net Timespan类非常相似。 此外,还有一些unit testing,其中包含许多关于如何使用它的例子。

如果您使用的是Java 8(或更高版本),或者根本不想导入JodaTime(JodaTime的作者自己build议迁移到java.time):Java 8提供具有Periods的function,请参阅此处的教程: https ://docs.oracle.com/javase/tutorial/datetime/iso/period.html

我在这里引用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)