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
相关产品推荐
相关产品推荐

