Решение
fun daysBetweenDates(date1: String, date2: String): Int {
// Функция для проверки високосного года
fun isLeap(year: Int): Boolean {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
}
// Количество дней в каждом месяце
val daysInMonth = intArrayOf(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
// Функция для подсчёта дней с начала эпохи до заданной даты
fun countDays(date: String): Int {
val parts = date.split("-").map(String::toInt)
val year = parts[0]
val month = parts[1]
val day = parts[2]
var days = 0
// Суммируем дни за полные года
for (y in 1971 until year) {
days += if (isLeap(y)) 366 else 365
}
// Суммируем дни за полные месяцы текущего года
for (m in 1 until month) {
days += if (m == 2 && isLeap(year)) 29 else daysInMonth[m - 1]
}
// Добавляем дни текущего месяца
days += day
return days
}
// Возвращаем абсолютную разницу между двумя датами
return kotlin.math.abs(countDays(date1) - countDays(date2))
}