2015-03-31 3 views
4

Пожалуйста, внимательно прочитайте вопрос перед маркировкой дубликата.android получить предыдущую дату соответствующей даты (не вчерашняя дата)

Я хочу предыдущую дату в соответствующего даты. (Не вчерашняя дата)

например. Если пользователь нажмет кнопку, как только он будет перемещен на другой экран, и будут показаны данные вчера.

И если он снова нажимает на ту же кнопку на этом экране, данные должны отображаться позавчера ... и т. Д. ... пока данные не будут представлены в моей базе данных.

Так что я хочу получить предыдущую дату соответствующей даты. то есть, если у меня есть дата 31 января 2014 года (я использую формат 31012014 для хранения в db), то я должен получить дату 30012014.

Я знаю, как получить вчерашнюю дату, например. ниже кода

Calendar calendar = Calendar.getInstance(); 
    calendar.add(Calendar.DATE, -1); 
    DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy", Locale.getDefault()); 
    String yesterdayAsString = dateFormat.format(calendar.getTime()); 

, который дает даты по сравнению с сегодняшним днем, но я хочу предыдущую дату по сравнению с какой-либо другой допустимой датой.

Итак, как это получить.

ответ

7

Вы должны использовать SimpleDateFormat для преобразования String> Date, after Date> Calendar, например;

String sDate = "31012014"; 
SimpleDateFormat dateFormat = new SimpleDateFormat("ddMMyyyy", Locale.getDefault()); 
Date date = dateFormat.parse(sDate); 
Calendar calendar = Calendar.getInstance(); 
calendar.setTime(date); 
calendar.add(Calendar.DATE, -1); 
String yesterdayAsString = dateFormat.format(calendar.getTime()); 
+0

хороший ответ, спасибо, принял –

0

У вас есть все права, за исключением того, прежде чем «добавить» -1 дней, вам необходимо установить его на желаемую дату (прежде, чем найти предыдущую дату предыдущего):

Calendar calendar = Calendar.getInstance(); 
calendar.set(2014, Calendar.JUNE, 9); 
calendar.add(Calendar.DATE, -1); 
... 
0

Прежде всего, как подсказка, лучше хранить свои даты как временные метки, так что вы не будете зависеть от временных форматов.

Что касается вашего вопроса, просто сохранить текущую дату в переменной и отправить его в ваш метод, как только кнопка будет нажата, а затем вычесть дополнительный день

Calendar curDate = Calendar.getInstance(); 
curDate.add(Calendar.DATE, -1); 

и использовать переменную CurDate с тех пор

2

Используйте этот, его рабочий и протестированный код.

private String getPreviousDate(String inputDate){ 
       inputDate = "15-12-2015"; // for example 
       SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy"); 
       try { 
        Date date = format.parse(inputDate); 
        Calendar c = Calendar.getInstance(); 
        c.setTime(date); 

        c.add(Calendar.DATE, -1); 
        inputDate = format.format(c.getTime()); 
        Log.d("asd", "selected date : "+inputDate); 

        System.out.println(date); 
       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
         inputDate =""; 
       } 
       return inputDate; 
      } 
+0

хороший ответ, спасибо –

+0

Добро пожаловать @ShirishHerwade :) – Yogendra

Смежные вопросы