我试图从DatePicker中获取所选日期,但总是比所选日期少一天
例如,如果我选择14/2/2022,则获得13/2/2022,如果我选择8/10/2018,则获得7/10/2018
这是我的代码:
private fun DatePickerSelected() {
val picker = MaterialDatePicker.Builder.datePicker()
.setTitleText("Select date of birth")
.setSelection(MaterialDatePicker.todayInUtcMilliseconds())
.build()
picker.addOnPositiveButtonClickListener {
val date = Date(picker.selection!!)
Log.d("Date",date.toString())
val dateString = SimpleDateFormat("dd/MM/yyyy").format(date)
binding.edtBirthday.editText?.setText(dateString)
}
picker.show(requireActivity().supportFragmentManager, "BirthdayPicker")
}
问题出在哪里?谢谢!
3条答案
按热度按时间wvmv3b1j1#
我找到了使用日历的解决方案
ryevplcw2#
原来调用picker的结果是一个UTC时区的时间戳,你所要做的就是把它转换成你的本地时区。
下面是显示DialogPicker的逻辑,它带有一个侦听器,可以将结果从UTC转换为设备的时区:
记住:你应该始终将Date处理为无时区,包括将其存储在数据库中,使用它来同步数据或进行比较。唯一的例外是当你向用户显示它时,在这种情况下,显然应该将其转换为本地时区。如果用户使用不同的时区使用你的应用程序,不这样做会导致真正的大问题。
xtfmy6hx3#
试试这个代码,加一天