Как найти предыдущую дату, если текущая дата указана в виде строки? - PullRequest
0 голосов
/ 20 января 2012

Как найти предыдущую дату, если текущая дата задана в виде строки? Ниже приведен мой код. Есть ли более короткое решение?

   private static String previousDay(String date) {
        String[] ymd = date.split("-");
        int year = Integer.parseInt(ymd[0]);
        int month = Integer.parseInt(ymd[1]);
        int day = Integer.parseInt(ymd[2]);
        String newDate = "";
        if (day > 1 & month > 1)
            newDate = year+"-"+month+"-"+(day-1);
        else if (day == 1 & month > 1) {
            Calendar calendar = new GregorianCalendar(year,month-1, 1);
            int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
            newDate = year+"-"+(month-1)+"-"+daysInMonth;
        } else if (day == 1 & month == 1) {
            Calendar calendar = new GregorianCalendar(year,12, 1);
            int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
            newDate = year+"-"+12+"-"+daysInMonth;
        }
        return newDate;
    }

Ответы [ 3 ]

3 голосов
/ 20 января 2012

Вам нужно преобразовать вашу строку в дату, чтобы сделать расчет даты. Вы можете использовать календарь, чтобы найти предыдущий день. Из вашего кода, я полагаю, ваш формат даты: гггг-мм-дд.

String input = "2009-09-30";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = dateFormat.parse(input);
Calendar cal1 = Calendar.getInstance();
cal1.setTime(myDate);
cal1.add(Calendar.DAY_OF_YEAR, -1);
Date previousDate = cal1.getTime();
1 голос
/ 20 января 2012
Date currentDate= new Date();

Calendar calendar = Calendar.getInstance();
calendar.setTime(currentDate);
calendar.add(Calendar.DAY_OF_YEAR, -1);

Date previousDate = calendar.getTime();
0 голосов
/ 20 января 2012
// dccTimeStamp is "20120122121212"
String dccTimeStamp is "20120122121212"
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date dcc = sdf.parse(dccTimeStamp);
log.debug("Dcc Date is " + dcc.toString());

С этого момента вы можете использовать утилиты Date (или Calendar) и выполнять необходимую операцию Date.

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