Следующие даты с использованием Java - PullRequest
0 голосов
/ 21 февраля 2011

Как я могу вычислить следующие даты, используя Java?

Например, если пользователь указывает мне текущую дату в поле, например 2011-02-21, я хочу вернуть тот же деньмесяц на следующие два месяца: 2011-03-21, 2011-04-21.

Ответы [ 6 ]

1 голос
/ 22 февраля 2011

Используя Calendar, как сказал @AlexR, вы можете использовать метод add(...) для добавления точки в дату.

Это:

Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 21);
c.set(Calendar.MONTH, Calendar.FEBRUARY);
System.out.println("user entered date:");
System.out.println(c.getTime());
System.out.println();
System.out.println("next five months:");
for (int i = 0; i < 5; i++) {
    c.add(Calendar.MONTH, 1);
    System.out.println(c.getTime());
}

Распечатывается:

user entered date:
Mon Feb 21 15:56:49 EST 2011

next five months:
Mon Mar 21 15:56:49 EDT 2011
Thu Apr 21 15:56:49 EDT 2011
Sat May 21 15:56:49 EDT 2011
Tue Jun 21 15:56:49 EDT 2011
Thu Jul 21 15:56:49 EDT 2011
1 голос
/ 21 февраля 2011

Использование Joda-Time :

    DateTime dt = new DateTime(2005, 3, 26, 0, 0, 0, 0);

    Period everyMonth= Period.months(1);

    DateTime dt1 = dt.plus(everyMonth);
    DateTime dt2 = dt1.plus(everyMonth);
    DateTime dt3 = dt2.plus(everyMonth);
    DateTime dt4 = dt3.plus(everyMonth);
    DateTime dt5 = dt4.plus(everyMonth);

    System.out.println(dt.toDate());
    System.out.println(dt1.toDate());
    System.out.println(dt2.toDate());
    System.out.println(dt3.toDate());
    System.out.println(dt4.toDate());
    System.out.println(dt5.toDate());

OUTPUT

Sat Mar 26 00:00:00 CST 2005
Tue Apr 26 00:00:00 CDT 2005
Thu May 26 00:00:00 CDT 2005
Sun Jun 26 00:00:00 CDT 2005
Tue Jul 26 00:00:00 CDT 2005
Fri Aug 26 00:00:00 CDT 2005
1 голос
/ 21 февраля 2011

Использовать Calendar.add (...)

Вот пример:

    Calendar c = Calendar.getInstance();
    c.set(Calendar.DAY_OF_MONTH, 31);
    c.set(Calendar.MONTH, Calendar.DECEMBER);
    System.out.println(c.getTime());


    c.add(Calendar.DAY_OF_YEAR, 1);
    System.out.println(c.getTime());

Это печатает:

Sat Dec 31 21:25:12 IST 2011
Sun Jan 01 21:25:12 IST 2012

(я просто хотел проверитьчто это действительно дает правильный результат, когда следующая дата в следующем году.)

1 голос
/ 21 февраля 2011

Как насчет использования DateTime из YodaTime ?

new DateTime().plusDays(nDays)?

См. Также plusMonths()

0 голосов
/ 21 февраля 2011
0 голосов
/ 21 февраля 2011

Посмотрите на Java Календарь , в частности метод add .

...