Kotlin: получение разницы между двумя датами (текущей и предыдущей) - PullRequest
1 голос
/ 21 февраля 2020

Извините, если подобные вопросы задавались слишком много раз, но кажется, что в каждом ответе, который я нахожу, есть одна или несколько проблем.

У меня есть дата в виде строки: Пример: " 04112005 "

Это дата. 4 ноября 2005 г.

Я хочу получить разницу в годах и днях между текущей датой и этой датой.

Код, который у меня есть, получает год и только вычитает их:

fun getAlderFraFodselsdato(bDate: String): String {
    val bYr: Int = getBirthYearFromBirthDate(bDate)
    var cYr: Int = Integer.parseInt(SimpleDateFormat("yyyy").format(Date()))

    return (cYr-bYr).toString()
}

Однако, естественно, это довольно неточно, так как месяц и дни не включены.

Я пробовал несколько подходов для создания Date, LocalDate, SimpleDate et c. объекты и использовать их для расчета разницы. Но по какой-то причине я не заставил их работать.

Мне нужно создать объект Date (или аналогичный) текущего года, месяца и дня. Затем мне нужно создать тот же объект из строки, содержащей, скажем, месяц и год ("" 04112005 ""). Тогда мне нужно узнать разницу между этими значениями в годах, месяцах и днях.

Все подсказки приветствуются.

1 Ответ

3 голосов
/ 21 февраля 2020

Я бы использовал java.time.LocalDate для анализа и сегодня вместе с java.time.Period, который вычисляет период между двумя LocalDate с.
См. Этот пример:

fun main(args: Array<String>) {
    // parse the date with a suitable formatter
    val from = LocalDate.parse("04112005", DateTimeFormatter.ofPattern("ddMMyyyy"))
    // get today's date
    val today = LocalDate.now()
    // calculate the period between those two
    var period = Period.between(from, today)
    // and print it in a human-readable way
    println("The difference between " + from.format(DateTimeFormatter.ISO_LOCAL_DATE)
            + " and " + today.format(DateTimeFormatter.ISO_LOCAL_DATE) + " is "
            + period.getYears() + " years, " + period.getMonths() + " months and "
            + period.getDays() + " days")
}

Выход для today из 2020-02-21 равен

The difference between 2005-11-04 and 2020-02-21 is 14 years, 3 months and 17 days
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...