tl;博士
Duration d = Duration.ofMillis( … ) ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
Java 9 及更高版本
在 Java 9 及更高版本中,创建 Duration 并调用 to…Part 方法。在这种情况下:toMinutesPart 和 toSecondsPart。
捕捉秒表的开始和停止。
Instant start = Instant.now();
…
Instant stop = Instant.now();
在Duration 对象中表示经过的时间。
Duration d = Duration.between( start , stop );
询问每个部分,分钟和秒。
int minutes = d.toMinutesPart();
int seconds = d.toSecondsPart();
您可能还想查看您的秒表是否按预期运行了很长时间。
Boolean ranTooLong = ( d.toDaysPart() > 0 ) || ( d.toHoursPart() > 0 ) ;
Java 8
在 Java 8 中,Duration 类缺少 to…Part 方法。您将需要按照其他答案所示进行数学运算。
long entireDurationAsSeconds = d.getSeconds();
或者让Duration 算一下。
long minutesPart = d.toMinutes();
long secondsPart = d.minusMinutes( minutesPart ).getSeconds() ;
见live code in IdeOne.com。
间隔:2016-12-18T08:39:34.099Z/2016-12-18T08:41:49.099Z
d.toString(): PT2M15S
d.getSeconds(): 135
经过:2M 15S
分辨率
仅供参考,now 方法的分辨率在 Java 8 和 Java 9 之间发生了变化。请参阅this Question。
-
Java 9 以纳秒级的分辨率捕捉瞬间。分辨率取决于计算机硬件的能力。我在装有 macOS Sierra 的 MacBook Pro Retina 上看到微秒(六位小数)。
-
Java 8 最多只能捕捉几毫秒的时间。
Clock 的实现仅限于毫秒的分辨率。因此,您可以在纳秒内存储值,但只能在毫秒内捕获它们。
关于java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.Date、Calendar 和 SimpleDateFormat。
要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。
您可以直接与您的数据库交换 java.time 对象。使用符合JDBC 4.2 或更高版本的JDBC driver。不需要字符串,不需要java.sql.* 类。
从哪里获得 java.time 类?