我想在当前日期前加上确切的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)
答案 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);