-2

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

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"))

如何计算endTime和之间的秒数差异startTime

4

1 回答 1

2

使用java.time.temporal.ChronoUnit

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

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

请记住,结果是四舍五入的——如果真正的区别是,比如说,1999 毫秒,上面的代码将返回 1(因为 1999 毫秒不足以产生 2 秒)。

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

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

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

val diffInSecs = ChronoUnit.SECONDS.between(start, end)
于 2018-02-20T12:29:46.643 回答