Как установить дату 1 год с текущей даты? - PullRequest
1 голос
/ 07 марта 2019

Я хочу добавить 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 ]

3 голосов
/ 07 марта 2019

Calendar.YEAR - это номер поля, указывающий год для календаря.Его значение равно 1. Итак, когда вы делаете это:

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

Первый параметр - это поле, которое вы хотите обновить (поле 1, ГОД), а второй - это сумма, которую вы хотите добавить кэто свойство, и в этот момент вы говорите, что хотите добавить Calendar.YEAR (1) + 1, поэтому вы добавляете 2 к году этого календаря.

Просто сделайте это:

cal.add(Calendar.YEAR, 1)

и вы получите то, что ожидаете.

0 голосов
/ 07 марта 2019

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
        }
0 голосов
/ 07 марта 2019

Вы добавляете Calendar.YEAR и +1 к своему текущему году. Поскольку Calendar.YEAR является константой со значением 1, которое вы фактически добавляете 2 лет.

Возможно, вы захотите взглянуть на java.time -API. Ваш пример может выглядеть так просто:

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