2015-10-23 1 views
1

Я не могу понять, почему JodaTime игнорирует AM/PM после даты, например.JodaTime синтаксический анализ даты + время + половина дня игнорируется половина дня поле

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 

Как вы можете увидеть входные DateTimes 12 часов друг от друга, но после разбора, а затем преобразовать обратно в строку они оба одновременно.

Редактировать: Благодаря Sotirios Delimanolis правильный способ сделать это состоит в использовании "чч", а не "НН":

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 

ответ

3

I не может найти documentation для этого, но кажется, что значение, соответствующее a (полдня дня), игнорируется (или перезаписывается) при использовании H, которое представляет

час дня (0 ~ 23)

Использование h для

clockhour из длящиеся (1 ~ 12)

+0

ты чемпион, и я чувствую, как идиот :) Да, «HH» должен быть «hh», –

Смежные вопросы