2番目の編集:
私の問題は、日付ピッカーダイアログから日付が設定されている場所にある可能性があります。
// the callback received when the user "sets" the date in the dialog
private DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
mYear = year;
mMonth = monthOfYear + 1;
mDay = dayOfMonth;
updateDisplay();
}
}
私はその月に+1ですが、データベースを比較するときに、それを二度と外すことはありません...
編集:さて、私はこれをダブルチェックしました(最終的にそれに到達しました)。案の定、
Date test1 = new Date(cobj.getTime().getTime()); //from the Calendar passed in
したがって、データベースから取得された日付は正しい日付です。次を使用して正しく表示されているにもかかわらず、ダイアログから戻ってくるもの:
String val = cobjstrong text.get(Calendar.MONTH) + "/" +
cobj.get(Calendar.DAY_OF_MONTH) + "/"+ cobj.get(Calendar.YEAR);
...オブジェクトをcobj.getTime()。getTime();として見ると、実際には1か月先です。(私が使用する日付は長いです)。私が見逃している他の方法や変換はありますか?
カレンダーオブジェクトで.getTimeを使用して、それから長さを取得するべきではありません(DateオブジェクトでgetTimeを再度呼び出す場合)。時々、私の最善の策は、ロングをミリ秒単位でデータベースに保存し、それを取得して、そこで日付変換を行うことだと思われることがありますか?
事前編集の質問:
したがって、データベースにこのDateフィールドがあり、emを読み取るときに、日付を格納してから日付を読み取ることができます... dateはそれを数値として返すため、.getMonth()に+1を追加する必要があります。 1〜12ではなく0〜11。この問題と他のいくつかの問題(.getMinutesがintを返すなど、時刻が5:00の場合は5:0のみが表示されますか?)に対処した後、最終的に日付が表示されましたが、試してみるとわかりました物事がずれている日にデータベースにクエリを実行するには、1か月で推測します。つまり、1か月の
2011年9月8日
(dd / mm / YYYY)形式で、次のORMLiteクエリを使用すると正しくクエリされません:( ormliteの.qe、GreaterThanEqualに注意してください)。
public void updateDatePickerButtonUI(Calendar cobj, int widget) {
String val = cobj.get(Calendar.MONTH) + "/"+ cobj.get(Calendar.DAY_OF_MONTH)
+ "/"+ cobj.get(Calendar.YEAR);
btnChooseDateReview.setText(val);
//the following just won't query correctly, its a month off
try {
//sessionDate
QueryBuilder<SessionsData, Integer> sb =
mDB.getSessionsDao().queryBuilder();
sb.where().ge(SessionsData.SESSIONSDATE_ID_NAME, cobj.getTime());
List<SessionsData> sessions = mDB.getSessionsDao().query(sb.prepare());
for (int i = 0; i < sessions.size(); i++) {
try {
mDB.getClientsDao().refresh(sessions.get(i).getClient());
mDB.getPackagesDao().refresh(sessions.get(i).getPackage());
} catch (SQLException e) {
...
}
}
theSessions = new CustomSessionReviewAdapter(mContext,
R.layout.session_review_row, sessions);
theSessions.notifyDataSetChanged();
theList.setAdapter(theSessions);
} catch (SQLException e) {
...
}
}
だから私は日付を間違って扱っているに違いありません、多分表示目的で月に追加するのは正しくありませんか?または何か...おそらくCalendarオブジェクトを使用したクエリで、その月のパートを0〜11にすることができます...ここでどのような方法を取るべきかわかりません。