При открытии DatePicker я выбираю день и при подтверждении конвертирую временную метку в LocalDate и сохраняю в значение.
При открытии DatePicker я хочу преобразовать LocalDate в метку времени и сначала выбрать этот день в DatePicker.
Проблема в том, что сейчас что сохраненная LocalDate верна. Но загруженная дата для установки начальной даты в DatePicker — это один выходной. До фактической даты LocalDate остается один день.
CustomDatePicker — это просто оболочка для стандартного DatePicker.
Код: Выделить всё
DatePicker(state = datePickerState)
Код: Выделить всё
fun convertTimestampToLocalDate(timestamp: Long, timeZone: ZoneId = ZoneId.systemDefault()): LocalDate {
return Instant.ofEpochMilli(timestamp)
.atZone(timeZone)
.toLocalDate()
}
fun convertLocalDateToTimestamp(localDate: LocalDate): Long {
val zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault())
val instant = zonedDateTime.toInstant()
return instant.toEpochMilli()
}
Код: Выделить всё
val selectedDate = remember { mutableStateOf(LocalDate.now()) }
val datePickerState = rememberDatePickerState(
initialSelectedDateMillis = convertLocalDateToTimestamp(selectedDate.value)
)
CustomDatePickerDialog(
datePickerState,
isDatePickerShown,
onClick = {
selectedDate.value =
convertTimestampToLocalDate(datePickerState.selectedDateMillis!!)
}
)
Я распечатал временную метку. это 1728597600000, что соответствует 10 октября по UTC, но локально в Германии это 11 октября.
Локализация смартфона установлена правильно
Я распечатал ZonedDateTime: 2024-10- 11T00:00+02:00[Европа/Берлин]
Подробнее здесь: https://stackoverflow.com/questions/790 ... conversion
Мобильная версия