2017-01-08 3 views
0

Мне было интересно, почему мой код неисправен, я обнаружил возможную ошибку.Kotlin Date.daysПосле функции другое возвращаемое значение с теми же аргументами

fun daysAfter(date: Date): Int { 
    Log.d("DayLayout", "date arg - $date") 
    Log.d("DayLayout", "firstDate.time - " + firstDate.time.toString()) 
    val ret = date.daysAfter(firstDate.time).toInt() 
    Log.d("DayLayout", "day after - " + ret) 
    return ret 
} 

Первый вызов данной функции

D/DayLayout: Дата Arg - Вс янв 08 09:48:57 EST 2017

D/DayLayout: firstDate.time - Вс Янв 01 9:49:04 EST 2017

D/DayLayout: день после - 6

Seco й вызов, несколько секунд спустя

D/DayLayout: Дата Arg - Вс 8 января 9:49:04 EST 2017

D/DayLayout: firstDate.time - вс 1 января 9:49:04 EST 2017

D/DayLayout: день после - 7

Как это вообще возможно? Мне что-то не хватает, функция с теми же аргументами должна возвращать одно и то же значение.

ответ

2

Мне не хватает чего-то, функция с теми же аргументами должна возвращать то же значение.

Но вы не вызываете его с одинаковыми значениями. Вы называете это двумя разными значениями.

Во-первых, вы сравниваете эти две даты:

date arg - Sun Jan 08 09:48:57 EST 2017 
         ^^^^^ 
firstDate.time - Sun Jan 01 09:49:04 EST 2017 

А потом сравните:

date arg - Sun Jan 08 09:49:04 EST 2017 
         ^^^^^ 
firstDate.time - Sun Jan 01 09:49:04 EST 2017 

Просто глядя на время, это кажется очевидным, почему первый вызов дает другой ответ от второй - потому что между ними существует другое количество дней. Посмотрите на время. В первом вы получаете 6 дней, 23 часа и 53 секунды от firstDate. Во втором вы точно 7 дней.

+0

Хорошо, спасибо, теперь это имеет смысл. – Tuby

Смежные вопросы