Конвертация JodaTime к концу месяца - PullRequest
0 голосов
/ 01 октября 2018

Я получил довольно прямолинейное DateConverter с методом, который преобразует String в org.joda.time.DateTime

public class DateConverter {
    private static final DateTimeFormatter DATE_TIME_FORMATTER =
            DateTimeFormat
                    .forPattern( "yyyy-MM-dd HH:mm:ss Z")
                    .withZone( DateTimeZone.forID("Europe/Warsaw") );

    public static DateTime toDateTime(String value) {
        return DateTime.parse(value, DATE_TIME_FORMATTER);
    }
}

Теперь, чтобы проверить это,

 String okDate = "2018-10-28 00:00:00 +0200";
 String wrongDate = "2018-10-29 00:00:00 +0200";        

 System.out.println("Ok result: " + DateConverter.toDateTime(okDate));
 System.out.println("Wrong result: " + DateConverter.toDateTime(wrongDate));

Что оставляет меня с выводом:

Ok результат: 2018-10-28T00: 00: 00.000 + 02: 00
Неверный результат: 2018-10-28T23: 00: 00.000 + 01: 00

Все дни до конца месяца, 29, 30, 31, как 28.Остальные дни в порядке.Может ли кто-нибудь помочь мне понять, что здесь происходит?Где ошибка, которую я сделал?

1 Ответ

0 голосов
/ 01 октября 2018

Э.Вы указали часовой пояс с изменением летнего времени на эту дату, поэтому он работает как задумано.

Если вы хотите ввести местное время и дату, вам не нужен Z в вашем формате.

...