如何设置从当前日期起1年的日期?

时间:2019-03-07 15:02:22

标签: android kotlin android-datepicker

我想在当前日期前加上确切的1年。如何实现呢?

我已经尝试过了:

fun getDefaultNextYearDate(): Date {
            val cal = Calendar.getInstance()
            cal.time = Date() //current date
            cal.add(Calendar.YEAR, Calendar.YEAR + 1)
            return cal.time
        }


val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SS'Z'", Locale.getDefault())
val nextYearDate = sdf.parse(sdf.format(Api.getDefaultNextYearDate()))

但这由于某种原因将从现在起增加2年(07/03/2021)

3 个答案:

答案 0 :(得分:3)

Calendar.YEAR是一个字段编号,指示日历的年份。 其值为1。 所以,当您这样做时:

cal.add(Calendar.YEAR, Calendar.YEAR + 1)

第一个参数是要更新的字段(字段1,即YEAR),第二个参数是要添加到此属性的数量,这时您要添加Calendar.YEAR (1)+ 1,因此,您要将2加到该日历的年份。

只需执行以下操作:

cal.add(Calendar.YEAR, 1)

您将拥有您的期望。

答案 1 :(得分:0)

您要将Calendar.YEAR+1添加到当前年份。由于Calendar.YEAR是一个值为1的常数,因此实际上您要添加2年。

您可能还想看看java.time-API。您的示例看起来很简单:

fun getDefaultNextYearDate() = LocalDateTime.now().plusYears(1)

答案 2 :(得分:0)

Calendar.add()具有两个参数,第一个是要添加的单位的单位,第二个是数量。因此,您需要将cal.add(Calendar.YEAR, Calendar.YEAR + 1)的{​​{1}}替换为

cal.add(Calendar.YEAR, 1);