Kotlin中的DatePicker显示错误的月份

时间:2018-07-24 04:12:35

标签: android kotlin

kotlin中实现 Datepicker 而不是July时,在所有设备中都显示M07

enter image description here

以下是日期选择器的代码:

val c = Calendar.getInstance()
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
val datePickerDialog = DatePickerDialog(activity, DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth -> //differnce(dayOfMonth, monthOfYear, year, false) }, year, month, day) datePickerDialog.show()

3 个答案:

答案 0 :(得分:0)

尝试一下:

class MainActivity : AppCompatActivity() {

var button_date: Button? = null
var textview_date: TextView? = null
var cal = Calendar.getInstance()

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    // get the references from layout file
    textview_date = this.text_view_date_1
    button_date = this.button_date_1

    textview_date!!.text = "--/--/----"

    // create an OnDateSetListener
    val dateSetListener = object : DatePickerDialog.OnDateSetListener {
        override fun onDateSet(view: DatePicker, year: Int, monthOfYear: Int,
                               dayOfMonth: Int) {
            cal.set(Calendar.YEAR, year)
            cal.set(Calendar.MONTH, monthOfYear)
            cal.set(Calendar.DAY_OF_MONTH, dayOfMonth)
            updateDateInView()
        }
    }

    // when you click on the button, show DatePickerDialog that is set with OnDateSetListener
    button_date!!.setOnClickListener(object : View.OnClickListener {
        override fun onClick(view: View) {
            DatePickerDialog(this@MainActivity,
                    dateSetListener,
                    // set DatePickerDialog to point to today's date when it loads up
                    cal.get(Calendar.YEAR),
                    cal.get(Calendar.MONTH),
                    cal.get(Calendar.DAY_OF_MONTH)).show()
        }

    })
}

private fun updateDateInView() {
    val myFormat = "MM/dd/yyyy" // mention the format you need
    val sdf = SimpleDateFormat(myFormat, Locale.US)
    textview_date!!.text = sdf.format(cal.getTime())
}

enter image description here

显示这样的日历,请尝试

答案 1 :(得分:0)

尝试更换

{ view, year, monthOfYear, dayOfMonth -> //differnce(dayOfMonth, monthOfYear, year, false) }

使用

{ view, year, monthOfYear, dayOfMonth -> this.year = year this.month = monthOfYear this.dayOfMonth = dayOfMonth}

答案 2 :(得分:0)

datebtn.setOnClickListener {
            val c= Calendar.getInstance()
            val year= c.get(Calendar.YEAR)
            val month = c.get(Calendar.MONTH)
            val day = c.get(Calendar.DAY_OF_MONTH)
            var dpd = DatePickerDialog(this,DatePickerDialog.OnDateSetListener { view, mYear,mMonth , mDay ->
                val mmMonth = mMonth+1
                val date = "$mDay/$mmMonth/$mYear"
                datetv.setText(date)
            },year,month,day)
            dpd.show()
        }