Второй РЕДАКТИРОВАТЬ:
Похоже, моя проблема может быть в том, где дата установлена в диалоговом окне выбора даты:
// 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 к месяцу, но больше никогда не снимаю это, когда сравниваю для базы данных ...
EDIT:
Хорошо, я дважды проверил это (наконец-то дошло до этого). Конечно же,
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 (); (длинный для дат, которые я использую). Я пропускаю какой-то другой метод или преобразование?
Не следует ли мне использовать .getTime для объекта Calendar только для того, чтобы получить длинную позицию от этого (с помощью вызова getTime снова для объекта Date?). Иногда мне кажется, что лучше всего сохранять длинные базы данных в миллисекундах в базе данных, а затем просто извлекать их и выполнять там преобразование дат?
РЕДАКТИРОВАТЬ вопрос:
ПОЭТОМУ у меня есть это поле Date в базе данных, где я могу сохранять дату и читать дату, когда я читаю их ... Я должен добавить +1 к .getMonth (), потому что date возвращает это как число 0-11, а не 1-12. После решения этой проблемы и нескольких других (например, .getMinutes, возвращающих int, поэтому, если время 5:00, отображается только 5: 0?), Но я, наконец, получил отображение даты просто великолепно, но я узнал, когда я пытаюсь чтобы запросить базу данных на дату выключены, я думаю, на один месяц. Так что это означает месяц
9/8/2011
Формат
(дд / мм / ГГГГ) не будет запрашиваться правильно при использовании следующего запроса ORMLite: (обратите внимание на .qe, GreaterThanEqual в ormlite).
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 или что-то ... не знаю, какой путь выбрать здесь.