Necesito establecer la fecha en el selector de fecha de material. Requiere Long para establecer la fecha. Intenté hacerlo con:
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()en este caso, el selector de fecha establece la fecha un día menos. ¿Existe una opción de conversión más precisa?
por ejemplo:
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() = 1638230400000pero el selector de fecha se estableció como "29 de noviembre de 2021"
la zona horaria en el teléfono GMT+03:00 hora estándar de Moscú
UPD comparó el valor de mi conversión de LocalDate en Long y MaterialDatePicker.todayInUtcMilliseconds() . Recibió diferentes valores. ¿Cuál es el error de mi traducción?
UPD2.
Las personas amables en los comentarios tenían razón sobre un posible error debido al uso de una zona horaria diferente. Siguiendo el consejo de uno de ellos, probé:
val selectedDateToLong = selectedDate.atStartOfDay(ZoneOffset.UTC)...en vez de
val selectedDateToLong = selectedDate.atStartOfDay(ZoneId.systemDefault())...Me ayudó