Kotlin 两个 LocalDateTime 之间的差异

问题描述 投票:0回答:1

我有两个

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 datetime date-difference kotlinx-date-time
1个回答
0
投票

非 Java

我还不了解 Kotlin,但我可以阅读 文档

LocalDateTime
类表示带有当天时间的日期,但缺少时区上下文或相对于 UTC 的偏移量。所以这个类不能代表时间轴上的一个时刻、一个点。

相比之下,

Instant
类确实代表了一个时刻,时间轴上的一个点。此类表示日期和时间,与 UTC 的偏移量为零小时-分钟-秒。

您可以获取

Instant
类中两个
DateTimePeriod
对象之间经过的时间量。
LocalDateTime
没有这样的课程。

因此,我们应该能够分配零偏移量,将

LocalDateDate
对象转换为
Instant
对象。我不知道该怎么做,因为我不使用 Kotlin。但我想你可以通过在所有三个参数中传递零来创建
UtcOffset
,然后将其应用到你的
LocalDateTime
以蜿蜒到
Instant

Java

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)
    ) ;
© www.soinside.com 2019 - 2024. All rights reserved.