到月底进行JodaTime转换

时间:2018-10-01 13:43:08

标签: java jodatime date-conversion

通过将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));

哪个让我输出:

  

好的结果:2018-10-28T00:00:00.000 + 02:00
错误的结果:   2018-10-28T23:00:00.000 + 01:00

直到月底的所有天,例如29日,30日,31日。休息的日子还可以。有人可以帮助我了解这里的情况吗?我在哪里弄错了?

1 个答案:

答案 0 :(得分:2)

嗯。您在该日期指定了夏令时更改的时区,因此可以正常工作。

如果要输入本地日期时间,则不希望Z成为您的格式。