JodaTime 月末转换

JodaTime conversion by the end of the month

我非常直接地 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 result: 2018-10-28T00:00:00.000+02:00
Wrong result: 2018-10-28T23:00:00.000+01:00

到月底的所有日子,29日、30日、31日和28日一样。其余日子还好。有人可以帮助我了解这里发生了什么吗?我犯的错误在哪里?

呃。您指定了一个在该日期更改夏令时的时区,因此按预期工作。

如果您想输入本地日期时间,则不需要格式中的 Z。