我们是否拥有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的)。
在这里有两个类可以用来表示一段时间:
-
Duration
,指示一个秒或纳秒的时间长度。 - 表示更友好的差异的期间,存储为“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)
- 使用Calendar.getInstance()获取当前date时间与新的GregorianCalendar()
- Eclipse – Android设备select器中的目标“未知”
- 在java中有内联函数吗?
- Java String.trim()会删除多less个空格?
- 为什么LinkedHashSet <E>扩展HashSet <e>并实现Set <E>
- 当我使用javax.tools.JavaCompiler编译源代码时如何设置classpath?
- 为什么每次调用LoggerFactory.getLogger(…)都不推荐?
- 绘制一个组件到BufferedImage导致显示损坏
- IntelliJ IDEA 13和Android Studio之间的差异