Вам нужно превратить строку в дату.Вы можете сделать это в своем запросе или после получения строкового результата:
Вариант 1: превратить его в тип даты в своем запросе:
SELECT TO_DATE("COLNAME", 'MM/DD/YYYY') FROM "MYTABLE"
Вариант 2: превратить его вТип даты после получения строки:
String date_from_db;
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
Date date = sdf.parse(date_from_db);
Затем вы можете увидеть, находится ли текущее время (new Date()
) между полученной датой и днем до этого.Если вы хотите обрабатывать все угловые случаи, включая високосные секунды, вам нужно будет использовать Calendar
, но если вы не будете пропускать високосные секунды, тогда будет просто вычесть 24 * 60 * 60 * 1000миллисекунды от вашей даты в БД.
Вы не можете напрямую сравнить Date
и Calendar
согласно документации API :
...objects равны в том и только в том случае, если метод getTime возвращает одинаковое длинное значение для обоих
Кроме того, Calendar
s equals()
не будет работать:
Результат верен тогда и только тогда, когда аргумент является объектом Calendar той же системы календаря, который представляет то же значение времени
Простое решение: используйте Calendar
's getTime()
метод, который возвращает объект Date
, который будет легко сравниваться с другими датами, используя equals()
, after()
и before()
.
Или в коде:
cal.add(Calendar.DAY, -1);
if(cal.getTime().equals(new Date())) { ... }
Вы также можете создать другой Calendar
и использовать его setTime()
, но это кажется менее эффективным.