使用JODA格式化日期 - 在AM时格式错误

时间:2015-01-15 04:52:57

标签: java datetime jodatime

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

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"但是,nto似乎也有所帮助。

1 个答案:

答案 0 :(得分:1)

Zz适用于时区 - 您需要a,这是半天的格式代码。

格式代码在org.joda.time.format.DateTimeFormat

JavaDoc中进行了描述

下面的代码适用于我(使用Joda 2.6在Java 8 JRE上运行)

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);
}