我有两个日期时间字符串:
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
之间的差异?
答案 0 :(得分:2)
使用java.time.temporal.ChronoUnit
:
// difference in seconds
ChronoUnit.SECONDS.between(startTime, endTime)
但startTime
和endTime
必须是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)