Преобразование метки времени Android Kotlin LocalDateAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Преобразование метки времени Android Kotlin LocalDate

Сообщение Anonymous »

У меня проблема с DatePicker и преобразованием LocalDate в метку времени
При открытии 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»