使用joda设置日期格式-在上午时格式错误

0aydgbwb  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(467)

我正在尝试格式化以下日期

Thu, 15 Jan 2015, 9:56 AM

使用以下方法:

public String parse(String oldDate){
        final String OLD_FORMAT = "EEE, d MMM yyyy, HH:mm:ss zz";
        final String NEW_FORMAT = "yyyy/MM/dd";

        // August 12, 2010
        String oldDateString = oldDate;
        String newDateString;

        DateTimeFormatter formatterOld = DateTimeFormat.forPattern(OLD_FORMAT);
        DateTimeFormatter formatterNew = DateTimeFormat.forPattern(NEW_FORMAT);
        LocalDate localDate = formatterOld.parseLocalDate( oldDateString );
        return newDateString = formatterNew.print( localDate );
    }

我得到一个

Caused by: java.lang.IllegalArgumentException: Invalid format: "Thu, 15 Jan 2015, 9:56 AM" is malformed at " AM"

我如何用那个日期格式正确地表示am/pm?我试着用z,但得到相同的和改变为zz,但在。am/pm的正确表示是什么?
我也用“hh:mm a”检查了一下,但这似乎还是有帮助的。

5lwkijsr

5lwkijsr1#

Z 以及 z 是时区的-你想吗 a 这是半天的格式代码。
格式化代码在javadoc中描述 org.joda.time.format.DateTimeFormat 下面的代码适用于我(运行在带有joda2.6的java8jre上)

public static void main(String[] args) {
    String format = "EEE, d MMM yyyy, HH:mm a";
    DateTimeFormatter formatter = DateTimeFormat.forPattern(format);
    final LocalDate date = formatter.parseLocalDate("Thu, 15 Jan 2015, 9:56 AM");
    System.out.println(date);
}

相关问题