Прежде всего, вы задаете два вопроса вместо одного, я постараюсь дать вам ответ на оба.
- Чтобы изменить формат даты в java, посмотрите документациюдля SimpleDateFormat вы можете передать шаблон конструктору этого класса, чтобы он отформатировал ваши даты так, как вам действительно нужно.В вашем конкретном случае шаблон, который вы ищете:
dd/MM/yyyy
- Если вы храните даты в своей базе данных в виде строк, вы теряете некоторые преимущества, связанные с сохранением дат.Например, ваш второй вопрос будет легко выполнен, если вы храните даты вместо строк в ваших таблицах, поскольку единственное, что вам нужно для достижения того, чего вы хотите, - это выполнить операцию
select
с вашей таблицей, используя функции даты, предоставляемые SQLLite.,Посмотрите на эту веб-страницу, так как она даст вам представление о том, что вы можете делать с этими функциями: Функции даты SQLLite
Примечание : Конечно, если вы все еще хотите сохранить их как строки, единственное решение, которое у вас будет, - это прочитать все записи, проанализировать все строки до даты и использовать класс java.util.Calendar
, чтобы проверить, какая запись старше 31 дня, а какая нет.,Я бы предпочел вместо этого выполнять SQL-запрос, поскольку он имеет слишком высокую производительность (особенно на мобильном устройстве).
EDIT :
SQLLite и Androidне говоря уже о моих сильных сторонах, я провел небольшое исследование и нашел несколько постов, в которых люди фактически хранили их как строки, как вы изначально начали делать.Если SQLLite на Android не поддерживает сохранение дат в том виде, в каком они есть (как это делают другие базы данных), возможно, лучшим вариантом в вашем сценарии является использование значения long
в качестве даты.Посмотрите на класс определения Date
, у него есть метод getTime
, который возвращает значение даты как длинное значение, вы можете использовать это значение позже, чтобы создать новый экземпляр даты (используя его конструктор).
Чтобы отформатировать эту дату (конечно, объект Date
) во что-то читаемое пользователем, DateFormat
(или любая из его реализаций) все еще остается ответом.
сделайте запрос, который вы хотите выполнить, сохранив даты как длинные. Я предлагаю вам взглянуть на класс DateUtils
из библиотеки Apache Commons Lang .В этом классе вы найдете несколько функций, которые работают с датами, поэтому перед созданием запроса вам нужно извлечь строки за последние 31 даты, вы можете использовать что-то вроде:
Date now = new Date();
Date before = DateUtils.addDays(now, -31);
long beforeAsLong = before.getTime();
String query = "select * from TABLE_NAME where DATE_FIELD >= " + beforeAsLong;
Надеюсь, это поможет.