Уменьшить дату в Java - PullRequest
10 голосов
/ 27 апреля 2011

Я хочу получить предыдущий день (24 часа) от текущего времени.

например, если текущее время Date currentTime = new Date();

2011-04-25 12:15: 31: 562 GMT

Как определить время, т.е.

2011-04-24 12: 15: 31: 562 GMT

Ответы [ 4 ]

30 голосов
/ 27 апреля 2011

Вы можете сделать это, используя Календарь класса :

Calendar cal = Calendar.getInstance();
cal.setTime ( date ); // convert your date to Calendar object
int daysToDecrement = -1;
cal.add(Calendar.DATE, daysToDecrement);
date = cal.getTime(); // again get back your date object
10 голосов
/ 27 апреля 2011

Я бы предложил вам использовать для начала Joda Time , что является намного более приятным API.Тогда вы можете использовать:

DateTime yesterday = new DateTime().minusDays(1);

Обратите внимание, что «это время вчера» не всегда 24 часа назад, хотя ... вам нужно подумать о часовых поясах и т. Д. Вы можете использовать LocalDateTime илиInstant вместо DateTime.

2 голосов
/ 27 апреля 2011

пожалуйста, проверьте это здесь: Дата Java против календаря

Calendar cal=Calendar.getInstance();
cal.setTime(date); //not sure if date.getTime() is needed here
cal.add(Calendar.DAY_OF_MONTH, -1);
Date newDate = cal.getTime();
1 голос
/ 27 апреля 2011

24 часа и 1 день - это не одно и то же.Но вы оба используете Календарь:

Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE, -1);
Date d = c.getTime();

Если вы возвращаетесь на 24 часа назад, вы должны использовать Calendar.HOUR_OF_DAY

...