Kotlin中如何为当前或选定日期添加指定月份或天数
实现方案
在DatePickerDialog的日期选中回调里,拿到选中日期的selectDate实例后,直接调用add方法给月份字段+1,格式化后赋值给你要展示延后日期的TextView即可。
修改后的完整代码如下:
val simpleDateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault()) val getDate :Calendar = Calendar.getInstance() val datepicker = DatePickerDialog(this, android.R.style.Theme_Holo_Light_Dialog_MinWidth, DatePickerDialog.OnDateSetListener { datePicker, year, month, day -> // 初始化选中日期实例 val selectDate :Calendar = Calendar.getInstance() selectDate.set(Calendar.YEAR, year) selectDate.set(Calendar.MONTH, month) selectDate.set(Calendar.DAY_OF_MONTH, day) // 展示原始选中日期 val date :String = simpleDateFormat.format(selectDate.time) sulusText.setText(date) // 计算延后1个月的日期 selectDate.add(Calendar.MONTH, 1) val nextMonthDateStr = simpleDateFormat.format(selectDate.time) // 替换为你自己的目标TextView控件名 targetTextView.setText(nextMonthDateStr) }, getDate.get(Calendar.YEAR), getDate.get(Calendar.MONTH), getDate.get(Calendar.DAY_OF_MONTH) ) datepicker.show()
- 注意:上述代码先格式化了原始选中日期再修改
selectDate的值,不需要额外克隆实例;如果需要保留原始选中日期的Calendar实例做其他操作,可以先克隆再修改克隆后的实例。 - Calendar的
add方法会自动处理跨年份、小月/闰月日期溢出的场景:比如选中2024年1月31日,加1个月后会自动调整为2024年2月29日;选中2023年12月10日,加1个月后会自动变成2024年1月10日,符合需求逻辑。
内容的提问来源于stack exchange,提问作者MrKoala
相关产品推荐
相关产品推荐

