Louis
Louis

Reputation: 111

Subtract one Day from date when inside a time interval

I try to subtract one day when the time inside 0:00 am - 12:00 am.

ex: 2012-12-14 06:35 am => 2012-12-13

I have done a function and It's work. But my question is any other better code in this case? Much simpler and easy to understand.

public String getBatchDate() {

    SimpleDateFormat timeFormatter = new SimpleDateFormat("H");
    int currentTime = Integer.parseInt(timeFormatter.format(new Date()));
    SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyyMMdd");
    String Date = dateFormatter.format(new Date());

    if ( 0 <= currentTime && currentTime <= 12){
        try {
            Calendar shiftDay = Calendar.getInstance();
            shiftDay.setTime(dateFormatter.parse(Date));
            shiftDay.add(Calendar.DATE, -1); 
            Date = dateFormatter.format(shiftDay.getTime());
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Log.d("BatchDate:", Date);
    }

    return Date;

}

THANKS,

Upvotes: 2

Views: 2344

Answers (3)

gogognome
gogognome

Reputation: 759

Use the Calendar class to inspect and modify the Date.

Calendar cal = new GregorianCalendar(); // initializes calendar with current time
cal.setTime(date); // initializes the calender with the specified Date

Use cal.get(Calendar.HOUR_OF_DAY) to find out the hour within the day.

Use cal.add(Calendar.DATE, -1) to set the date one day back.

Use cal.getTime() to get a new Date instance of the time that was stored in the calendar.

Upvotes: 2

Stephan
Stephan

Reputation: 7388

As with nearly all questions with regard to Date / Time, try Joda Time

public String getBatchDate() {
    DateTime current = DateTime.now();
    if (current.getHourOfDay() <= 12)
           current = current.minusDays(1); 
    String date = current.toString(ISODateTimeFormat.date());
    Log.d("BatchDate:" + date);
    return date;
}

Upvotes: 1

fiso
fiso

Reputation: 1415

Calendar shiftDay = Calendar.getInstance();
shiftDay.setTime(new Date())
if(shiftDay.get(Calendar.HOUR_OF_DAY) <= 12){
    shiftDay.add(Calendar.DATE, -1);
}
//your date format

Upvotes: 5

Related Questions