如何以秒计算时差?

时间:2018-02-20 10:50:22

标签: java scala datetime-format zoneddatetime

我有两个日期时间字符串:

val formatter = DateTimeFormatter.ofPattern("yyyy-MMM-dd-hh-mm-ss")
val startTime = formatter format ZonedDateTime.now(ZoneId.of("UTC"))
//...
val endTime = formatter format ZonedDateTime.now(ZoneId.of("UTC"))

如何计算endTimestartTime之间的差异?

1 个答案:

答案 0 :(得分:2)

使用java.time.temporal.ChronoUnit

// difference in seconds
ChronoUnit.SECONDS.between(startTime, endTime)

startTimeendTime必须是ZonedDateTime个对象,而不是字符串。

请记住,结果是全面的 - 如果真正的区别是,假设,1999毫秒,上面的代码将返回1(因为1999毫秒不足以使2秒)。

另一个细节是您可以使用ZoneOffset.UTC代替ZoneId.of("UTC"),因为结果相同。

实际上,如果您正在使用UTC,为什么不使用Instant.now()呢?上面的between方法与Instant的工作方式相同:

val start = Instant.now()
val end = Instant.now()

val diffInSecs = ChronoUnit.SECONDS.between(start, end)