JodaTime解析日期+时间+半天忽略了半天字段

时间:2015-10-23 01:12:05

标签: java jodatime

我无法理解JodaTime在日期之后忽略AM / PM的原因,例如

public static void main(String[] args) {
    DateTimeFormatter fmt = DateTimeFormat.forPattern("dd/MM/yy HH:mm:ss a");
    System.out.println(fmt.parseDateTime("23/06/2016 1:00:00 PM").toString("dd/MM/yy HH:mm:ss a"));
    System.out.println(fmt.parseDateTime("23/06/2016 1:00:00 AM").toString("dd/MM/yy HH:mm:ss a"));
}

,输出

23/06/16 01:00:00 AM
23/06/16 01:00:00 AM

正如您所看到的,输入日期时间相隔12小时,但在解析后转换回字符串时,它们都是同一时间。

修改: 感谢Sotirios Delimanolis,正确的做法是使用" hh"而不是" HH":

public static void main(String[] args) {
    DateTimeFormatter fmt = DateTimeFormat.forPattern("dd/MM/yy hh:mm:ss a");
    System.out.println(fmt.parseDateTime("23/06/2016 1:00:00 PM").toString("dd/MM/yy hh:mm:ss a"));
    System.out.println(fmt.parseDateTime("23/06/2016 1:00:00 AM").toString("dd/MM/yy hh:mm:ss a"));
}

,输出

23/06/16 01:00:00 PM
23/06/16 01:00:00 AM

1 个答案:

答案 0 :(得分:4)

我无法为此找到任何documentation,但在使用a时,似乎忽略(或覆盖)匹配H(一天的半天)的值代表

  

小时(0~23)

使用h获取

  

半天(1~12)的时钟