代码之家  ›  专栏  ›  技术社区  ›  JohnDoe

月底前的JodaTime转换

  •  0
  • JohnDoe  · 技术社区  · 6 年前

    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-28:00:00.000+02:00
    错误结果: 2018-10-28 23:00:00.000+01:00

    直到月底的日子,29日,30日,31日都像28日。剩下的日子没问题。有人能帮我理解这里发生了什么事吗?我犯的错在哪里?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Paul Janssens    6 年前

    休斯敦大学。您指定了一个时区,并且在该日期更改了DST,因此可以按预期工作。

    如果您想输入本地日期时间,您不希望在您的格式中使用Z。