我不明白为什么 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
最佳答案
我找不到任何documentation为此,但当使用表示
的H
时,匹配 a
(一天中的半天)的值似乎被忽略(或覆盖)
hour of day (0~23)
使用h
表示
clockhour of halfday (1~12)
关于java - JodaTime解析日期+时间+半天忽略半天字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33293316/