如何在 Kotlin 的 DatePickerDialog 中创建日期分隔符?

How to make a date delimiter in DatePickerDialog in Kotlin?

我有一个 DatePickerDialog 绑定到的 EditText。我正在努力使 DatePickerDialog 的日期约束不早于今天和年份。我在 Java 中找到了几个如何执行此操作的示例,并尝试了不同的编写方式,但没有任何效果:应用程序崩溃或无法正常工作。你能帮我设置 DatePickerDialog 的日期限制吗?

NewItemActivity.kt

class NewItemActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_new_item)

        val editDate = findViewById<EditText>(R.id.editDate)
        editDate.setOnClickListener {
            showDateDialog(editDate)
        }

    }

    private fun showDateDialog(editDate: EditText?) {
        val calendar: Calendar = Calendar.getInstance()
        val dateSetListener =
            OnDateSetListener { _, year, month, dayOfMonth ->
                calendar[Calendar.YEAR] = year
                calendar[Calendar.MONTH] = month
                calendar[Calendar.DAY_OF_MONTH] = dayOfMonth
                val simpleDateFormat = SimpleDateFormat("dd-MM-yyyy")
                editDate?.setText(simpleDateFormat.format(calendar.time))
            }

        DatePickerDialog(
            this@NewItemActivity,
            dateSetListener,
            calendar[Calendar.YEAR],
            calendar[Calendar.MONTH],
            calendar[Calendar.DAY_OF_MONTH]).show()
    }
}

你可以在过去的日期试试这个

datePickerDialog.getDatePicker().setMaxDate(cal.getTimeInMillis())

以及未来的日期 datePickerDialog.getDatePicker().setMinDate(cal.getTimeInMillis())

 fun openDatePickerDialog() {
        // Get Current Date
        val cal: Calendar = Calendar.getInstance()
        val datePickerDialog = DatePickerDialog(this@EditPostActivity,
            { view, year, monthOfYear, dayOfMonth ->
                val selectedDate: String =
                    dayOfMonth.toString() + "-" + (monthOfYear + 1) + "-" + year
                binding.etDate.setText(selectedDate)
            }, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)
        )
        datePickerDialog.getDatePicker().setMaxDate(cal.getTimeInMillis())
        datePickerDialog.show()
    }

你可以用这个来改变你的约会对象:

 fun convertDateToFormat(
        date: String?,
        format_date: String?,
        format_return: String?
    ): String? {

        var dt = Date()
        try {
            val sdf = SimpleDateFormat(format_date, Locale.ENGLISH)
            dt = sdf.parse(date)
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return DateFormat.format(format_return, dt).toString()
    }




Calendar today = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        selectedDateStr = sdf.format(today.getTime());
        String currentDate = Global.Companion.convertDateToFormat(selectedDateStr, "yyyy-MM-dd", "dd-MM-yyyy");
        editText.setText(currentDate);