2017-01-08 21 views
0

なぜ私のコードがバグかと疑問に思っていましたが、私はバグを発見しました。Kotlin Date.daysAfter関数が同じ引数を持つ異なる戻り値

与えられた関数の最初の呼び出し

D/DayLayout

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 
} 

:日付のarg - 日1月8日午前9時48分57秒EST 2017

D/DayLayout:firstDate.time - 日1月1日9時49分04秒EST 2017

D/DayLayout:1日後 - 6

セコND呼び出し、数秒後に

D/DayLayout:日付のarg - 日1月8日午前9時49分04秒EST 2017

D/DayLayout:firstDate.time - 日1月1日午前9時49分04秒EST DayLayout 2017

Dは/:日後 - 7

どうあっても可能ですか?私は何かが欠けている、同じ引数を持つ関数は同じ値を返す必要があります。

答えて

2

私は何かが欠けている、同じ引数を持つ関数は同じ値を返す必要があります。

ただし、同じ値で呼び出すわけではありません。あなたは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 
最初の呼び出しが異なる答えを与える理由

ただ時間を見て、それは明らかに思えます第二のもの - それらの間に異なる日数があるからです。時を見てください。最初の1つは、firstDateから6日、23時間、53秒です。 2番目には正確には 7日間です。

+0

ありがとう、それは今完璧な意味があります。 – Tuby

関連する問題