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

How to set date 1 year from current date?

我想在当前日期中加上准确的 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)

Calendar.YEAR 是表示日历年份的字段编号。 它的值为 1。 所以,当你这样做时:

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

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

只需这样做:

cal.add(Calendar.YEAR, 1)

你会得到你所期待的。

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

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

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

Calendar.add() 有两个参数,第一个是你要添加的单位,第二个是数量。所以你需要将 cal.add(Calendar.YEAR, Calendar.YEAR + 1) 替换为 cal.add(Calendar.YEAR, 1);

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