You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin中如何从Material Design DatePicker获取选中月份

Material Design DatePicker 获取选中月份实现方法

给MaterialDatePicker添加正面确认按钮的点击监听即可获取选中日期的时间戳,转换后就能提取月份,具体实现如下:


修改初始化代码,添加选择监听

在你原有的datePicker初始化代码后追加监听逻辑即可:

val datePicker = MaterialDatePicker.Builder.datePicker()
    .setTitleText("Kies een datum")
    .setSelection(MaterialDatePicker.todayInUtcMilliseconds())
    .build()

// 新增:监听用户确认选择的回调
datePicker.addOnPositiveButtonClickListener { selectTimeUtc ->
    // selectTimeUtc 为选中日期的UTC毫秒时间戳
    // 方案1:使用传统Calendar类获取月份
    val calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
    calendar.timeInMillis = selectTimeUtc
    // Calendar.MONTH默认返回0-11,加1转为日常使用的1-12月格式
    val month = calendar.get(Calendar.MONTH) + 1
    val year = calendar.get(Calendar.YEAR)
    // 此处可直接使用拿到的month做后续业务逻辑
    // 示例:打印选中年月
    Log.d("DatePicker选中", "年份:$year,月份:$month")

    // 方案2:项目支持Java 8+时间API时更推荐,无需手动处理月份偏移
    /*
    val zonedDate = Instant.ofEpochMilli(selectTimeUtc).atZone(ZoneId.of("UTC"))
    val month = zonedDate.monthValue
    val year = zonedDate.year
    Log.d("DatePicker选中", "年份:$year,月份:$month")
    */
}

你原有的唤起datePicker的pickDate函数无需修改,直接使用即可。


可选扩展监听

如果需要处理用户取消选择的场景,可以追加以下两个监听:

  • 点击取消按钮回调:datePicker.addOnNegativeButtonClickListener { /* 逻辑处理 */ }
  • 点击弹窗外部/返回键取消回调:datePicker.addOnCancelListener { /* 逻辑处理 */ }

内容的提问来源于stack exchange,提问作者Sander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:36:01