我正在嘗試設定一個日期選擇器,用戶將在其中選擇一個日期,如果它未滿 18 歲,則它會顯示一條訊息。
到目前為止,我認為日期選擇器無法選擇未來的日期,但我不知道如何設定條件來檢查用戶的日期是否低于 18 歲。任何幫助,將不勝感激。
fun setupBirthdateDatePicker() {
val c: Calendar = Calendar.getInstance()
val year: Int = c.get(Calendar.YEAR)
val month: Int = c.get(Calendar.MONTH)
val day: Int = c.get(Calendar.DAY_OF_MONTH)
setClickListener {
val dialog = if (textInput.text.isNullOrEmpty()) {
DatePickerDialog(context,
{ view, year, month, dayOfMonth ->
textInput.setText(Utils.getDateFromDatePicker(year, month, dayOfMonth))
}, year, month, day)
} else {
DatePickerDialog(context,
{ view, year, month, dayOfMonth ->
textInput.setText(Utils.getDateFromDatePicker(year, month, dayOfMonth))
},
Utils.getYearFromDate(textInput.text.toString()),
Utils.getMonthFromDate(textInput.text.toString()),
Utils.getDayFromDate(textInput.text.toString()))
}
dialog.datePicker.maxDate = c.timeInMillis
dialog.show()
}
}
uj5u.com熱心網友回復:
如果您想將 18 年前以紀元毫秒設定為選取器的最大/開始日期,您可以使用:
(ZonedDateTime.now() - Period.ofYears(18)).toInstant().toEpochMilli()
或者如果你想驗證,你可以這樣比較:
val eighteenYearsAgo = LocalDate.now() - Period.ofYears(18)
val listener = DatePickerDialog.OnDateSetListener { _, year, month, day ->
// 1 month because DatePicker's month is unfortunately zero-based
val pickedDate = LocalDate.of(year, month 1, day)
if (pickedDate < eighteenYearsAgo) {
// Picked a date less than 18 years ago
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/354357.html
標籤:安卓 科特林 日期选择器 android-edittext
上一篇:參考在函式中擴展此類的類
