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

如何获取Calendar类型的当前时间后一个月日期?适配日期选择器

解决Calendar类型获取当前时间后一个月的问题

嗨,这个问题我开发时也踩过类似的坑!核心问题是**Calendar.add()方法的返回值是Unit(Java中是void)**——它是直接修改调用它的Calendar实例本身,而不是返回一个新的Calendar对象,所以你没法把它的结果赋值给变量。

下面给你Kotlin和Java两种正确的实现方式:

Kotlin 实现

我们需要先创建当前Calendar的副本,再对副本进行月份增加操作,避免修改原有的当前时间实例:

val now = Calendar.getInstance()
// 创建新的Calendar实例并复制当前时间,再增加一个月
val oneMonthFromNow = Calendar.getInstance().apply {
    time = now.time
    add(Calendar.MONTH, 1)
}
// 直接将这个Calendar对象用于日期选择器的最大日期设置
datePickerDialog.maxDate = oneMonthFromNow.timeInMillis

Java 实现

Java里可以通过clone()方法复制原Calendar实例,再对副本进行操作:

Calendar now = Calendar.getInstance();
// 复制当前Calendar实例,避免修改原对象
Calendar oneMonthFromNow = (Calendar) now.clone();
oneMonthFromNow.add(Calendar.MONTH, 1);
// 设置日期选择器的最大日期
datePickerDialog.setMaxDate(oneMonthFromNow.getTimeInMillis());

小提示:如果你后续不需要用到原始的当前时间实例,也可以直接对now调用add()方法后使用,但为了代码的可维护性和避免意外修改,复制实例的做法更稳妥哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:11:37