如何计算以秒为单位的时差?
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"))
如何计算 endTime
和 startTime
之间的秒数差异?
使用 java.time.temporal.ChronoUnit
:
// difference in seconds
ChronoUnit.SECONDS.between(startTime, endTime)
但是 startTime
和 endTime
必须是 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)
我有两个日期时间字符串:
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
之间的秒数差异?
使用 java.time.temporal.ChronoUnit
:
// difference in seconds
ChronoUnit.SECONDS.between(startTime, endTime)
但是 startTime
和 endTime
必须是 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)