我正在使用 kotlinx.Clock.now() 来获取当前日期。接下来我需要将此日期转换为 LocalDateTime,这是我的代码:
Clock.System.now().toLocalDateTime(TimeZone.currentSystemDefault())
效果很好。但是,我需要获取今天的日期,但恰好是今天的开始,即 00:00:00。是否可以将时间重置为 00:00:00?
我正在使用 kotlinx.Clock.now() 来获取当前日期。接下来我需要将此日期转换为 LocalDateTime,这是我的代码:
Clock.System.now().toLocalDateTime(TimeZone.currentSystemDefault())
效果很好。但是,我需要获取今天的日期,但恰好是今天的开始,即 00:00:00。是否可以将时间重置为 00:00:00?
首先,获取今天的日期
LocalDate
。你可以从长远来看:
或者您可以使用以下方法进行简化
Clock.todayIn
:通过以上任一方式,您现在可以使用 开始
Instant
一天的工作LocalDate.atStartOfDayIn
。如果您需要
LocalDateTime
,您也可以从那里获得:把它们放在一起:
我推荐
atStartOfDayIn
,因为它会正确返回一天的起点——但这不一定00:00
。例如,古巴 2023 年 3 月 12 日 (tz:
America/Havana
) 的这一天开始于01:00
,因为这是夏令时的第一天,并且在该特定时区,转换发生于00:00
。(换句话说,当地时间从23:59
到01:00
当天。)。类似这样的案例还有很多。LocalDateTime
有一个以 aLocalDate
和 aLocalTime
作为参数的构造函数。您可以将所需的内容
LocalDate
与 一起传递给它LocalTime.MIN
,这将导致LocalDateTime
在特定日期,本地时间为00:00:00
。查看kotlinx-datetime 项目的来源