Добавление одного месяца к дате не выполняется с использованием Joda-Time DateTime в JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Добавление одного месяца к дате не выполняется с использованием Joda-Time DateTime в Java

Сообщение Anonymous »

Я пытался добавить полные месяцы от заданной даты начала с помощью Java DateTime и метода plusMonths().
Когда мое время начала приходится на начало месяца, все работает так, как ожидалось:

Код: Выделить всё

DateTime startOfMonth = new DateTime(2013, 1, 1, 00, 00, 00);
System.out.println(startOfMonth.toString());
for (int i = 0; i < 12; i++) {
startOfMonth = startOfMonth.plusMonths(1);
System.out.println(startOfMonth.toString());
}
Вывод — первый день каждого месяца, как и ожидалось, и все отлично!

Код: Выделить всё

    2013-01-01T00:00:00.000+01:00
2013-02-01T00:00:00.000+01:00
2013-03-01T00:00:00.000+01:00
2013-04-01T00:00:00.000+02:00
2013-05-01T00:00:00.000+02:00
2013-06-01T00:00:00.000+02:00
2013-07-01T00:00:00.000+02:00
2013-08-01T00:00:00.000+02:00
2013-09-01T00:00:00.000+02:00
2013-10-01T00:00:00.000+02:00
2013-11-01T00:00:00.000+01:00
2013-12-01T00:00:00.000+01:00
2014-01-01T00:00:00.000+01:00
Но когда я меняю свой пример на конец месяца, он не возвращает то, что я хочу!

Код: Выделить всё

System.out.println("");
DateTime endOfMonth = new DateTime(2012, 12, 31, 23, 59, 59);
System.out.println(endOfMonth.toString());
for (int i = 0; i < 12; i++) {
endOfMonth = endOfMonth.plusMonths(1);
System.out.println(endOfMonth.toString());
}
Это возвращает:

Код: Выделить всё

    2012-12-31T23:59:59.000+01:00
2013-01-31T23:59:59.000+01:00
2013-02-28T23:59:59.000+01:00
2013-03-28T23:59:59.000+01:00
2013-04-28T23:59:59.000+02:00
2013-05-28T23:59:59.000+02:00
2013-06-28T23:59:59.000+02:00
2013-07-28T23:59:59.000+02:00
2013-08-28T23:59:59.000+02:00
2013-09-28T23:59:59.000+02:00
2013-10-28T23:59:59.000+01:00
2013-11-28T23:59:59.000+01:00
2013-12-28T23:59:59.000+01:00
Итак, почему «2013-02-28T23:59:59.000+01:00» плюс один месяц, а не «2013-03-31T23:59:59.000+01:00»?
Где эти три дня?
>

Подробнее здесь: https://stackoverflow.com/questions/197 ... me-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»