/var/log/messages

debugging with sixth sense

onDateChanged における日付のチェック

ええと、AlarmManager を使って日付変更な Broadcast を飛ばして、という処理を実装してたのですが (下記を参考に実装したはず)

設定されてる日付で何の処理も行なわれてなくて、その設定日が更新されていない場合 (何らかの処理を行なえば設定日も更新される) に設定日を更新してしまうような実装を書いてたのですがその試験でハマりましたので備忘録を。

以下な形で Preferences から文字列な年月日を取得して Date に変換したものとその時点の日時を Date にしたものを比較しています。

で、比較するナニが同一の値だった場合のログが以下です。

today : Sun Jan 25 00:00:00 Jst 2015
string_next_time : 2015/01/24
next_time : Sun Jan 25 00:00:00 Jst 2015
next_time.before(today) : true
today.after(next_time) : true
next_time.compareTo(today) : -1
doday.compareTo(next_time) : 1

なんで同じ値のはずなのにこうなるのかが不思議というか、この動作を踏まえて微妙なチェックの方法になってしまっているのが非常に気持ち悪く思っている次第です。

それにしてもこれ、なんでこんな動作なのだろうかorz

Comments