Сомневаюсь в получении вчерашней даты с помощью Java - PullRequest
2 голосов
/ 11 февраля 2010

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

 SimpleDateFormat formatter= 
        new SimpleDateFormat("yyyy-mm-dd ");
    Calendar currentDate = Calendar.getInstance();
    String previous = formatter.format(currentDate.getTime())+ "00:00:00.000000000";
    System.out.println("previous ="+previous);
    currentDate.add(Calendar.DATE, -1);
    String previousDate = formatter.format(currentDate.getTime())+ "00:00:00.000000000";
    Timestamp updateTimestamp = Timestamp.valueOf(previousDate);
    System.out.println("Update date ="+updateTimestamp);

Это вывод, который я получил при последнем запуске
предыдущая = 2010-15-11 00: 00: 00.000000000
Дата обновления = 2011-03-10 00: 00: 00.0

Ответы [ 4 ]

15 голосов
/ 11 февраля 2010

Проблема в том, что вы используете 'гггг-мм-дд', который тянет год-минуту-день. Вместо этого используйте «гггг-ММ-дд».

10 голосов
/ 11 февраля 2010

Вы использовали мм в своем шаблоне, поэтому вы используете минуты вместо месяцев.

Если вы хотите использовать Joda Time , более простую структуру дат, вы можете сделать следующее:

DateTimeFormat format = DateTimeFormat.forPattern("yyyy-MM-dd 00:00:00.000000000");
DateTime now = new DateTime();
System.out.println("Previous :" + format.print(now);
DateTime oneDayAgo = now.minusDays(1);
System.out.println("Updated :" + format.print(oneDayAgo);
6 голосов
/ 11 февраля 2010

Неверная строка шаблона формата даты. «мм» - минуты, «ММ» - месяцы. Вы могли бы легко решить эту проблему, посмотрев на промежуточные результаты, выглядящие как «2010-52-11 ...».

2 голосов
/ 11 февраля 2010
Calendar cal = Calendar.getInstance();
cal.roll(Calendar.DATE, false); //you can also use add(int, int)
System.out.println(cal.toString());

Все в стандартной Java начиная с версии 1.1. Также взгляните на GregorianCalendar, если вам нужно. Прочитайте документы, чтобы узнать, как они справляются с переходом на летнее время и т. Д.

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