我有两个
kotlinx.datetime.LocalDateTime
实例:
val startDate =
LocalDateTime(year = 2020, month = Month.MARCH, dayOfMonth = 25, hour = 10, minute =
36, second = 12)
val endDate =
LocalDateTime(year = 2023, month = Month.FEBRUARY, dayOfMonth = 28, hour = 0, minute
= 0, second = 1)
我想计算这两个日期之间的差异,但我不想使用Java方式。 我怎样才能做到这一点? 顺便说一句,我正在做微优化,所以我无法将它们转换为
Instant
来使用 Instant.until()
。
我还不了解 Kotlin,但我可以阅读 文档。
LocalDateTime
类表示带有当天时间的日期,但缺少时区上下文或相对于 UTC 的偏移量。所以这个类不能代表时间轴上的一个时刻、一个点。
Instant
类确实代表了一个时刻,时间轴上的一个点。此类表示日期和时间,与 UTC 的偏移量为零小时-分钟-秒。
您可以获取
Instant
类中两个 DateTimePeriod
对象之间经过的时间量。 LocalDateTime
没有这样的课程。
因此,我们应该能够分配零偏移量,将
LocalDateDate
对象转换为 Instant
对象。我不知道该怎么做,因为我不使用 Kotlin。但我想你可以通过在所有三个参数中传递零来创建 UtcOffset
,然后将其应用到你的 LocalDateTime
以蜿蜒到 Instant
。
kotlinx-datetime 是一个模仿与 Java 捆绑在一起的 java.time 框架的库,但仅包含功能的有限子集。
Duration
类。
如果您的应用程序将部署到 JVM,请使用 java.time。
Duration.between( startLdt , endLdt )
。
Duration d =
Duration.between(
LocalDateTime.of( 2020, Month.MARCH, 25, 10, 36, 12) ,
LocalDateTime( 2023, Month.FEBRUARY, 28, 0, 0, 1)
) ;