gpt4 book ai didi

java - 如何在 Kotlin/Java 中将 LocalDate 转换为 Long

转载 作者:行者123 更新时间:2023-12-04 17:07:50 27 4
gpt4 key购买 nike

我需要在 Material 日期选择器中设置日期。它需要 Long 来设置日期。我尝试这样做:

val formatter = DateTimeFormatter.ofPattern(DAY_FORMAT_PATTERN)
val selectedDate = LocalDate.parse(viewModel.selectedDateStateFlow.value, formatter)
val selectedDateToLong = selectedDate.atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli()

val datePicker = MaterialDatePicker.Builder.datePicker()
.setTheme(R.style.DatePicker)
.setSelection(selectedDateToLong)
.build()

在这种情况下,日期选择器将日期设置为少一天。有没有更准确的转换选项?

例如:

I/System.out: viewModel.selectedDateStateFlow.value = 30 Nov, 2021 
I/System.out: selectedDate = 2021-11-30
I/System.out: selectedDateToLong = 1638219600000
I/System.out: MaterialDatePicker.todayInUtcMilliseconds() = 1638230400000

但日期选择器设置为“2021 年 11 月 29 日”

手机上的时区 GMT+03:00 莫斯科标准时间

UPD比较我将 LocalDate 转换为 LongMaterialDatePicker.todayInUtcMilliseconds() 的值。收到不同的值。我的翻译有什么错误?

最佳答案

UPD2.

评论中的好心人对由于使用不同时区可能导致的错误是正确的。根据其中一位的建议,我尝试了:

val selectedDateToLong = selectedDate.atStartOfDay(ZoneOffset.UTC)...

代替

val selectedDateToLong = selectedDate.atStartOfDay(ZoneId.systemDefault())...

它帮助了我

关于java - 如何在 Kotlin/Java 中将 LocalDate 转换为 Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70167570/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com