如何计算以秒为单位的时差?

How to calculate the time difference in seconds?

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

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 之间的秒数差异?

使用 java.time.temporal.ChronoUnit:

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

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

请记住结果是 floor-rounded - 如果真正的区别是,比方说,1999 毫秒,上面的代码将 return 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)