Разница между java HH: mm и hh: mm на SimpleDateFormat
В чем разница между форматами kk: mm, HH: mm и hh: mm?
SimpleDateFormat broken = new SimpleDateFormat("kk:mm:ss");
broken.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
SimpleDateFormat working = new SimpleDateFormat("HH:mm:ss");
working.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
SimpleDateFormat working2 = new SimpleDateFormat("hh:mm:ss");
working.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
System.out.println(broken.format(epoch));
System.out.println(working.format(epoch));
System.out.println(working2.format(epoch));
печатает:
24:00:00
00:00:00
05:30:00
Ответы
Ответ 1
kk: (01-24) будет выглядеть как 01, 02..24.
HH: (00-23) будет выглядеть как 00, 01..23.
hh: (01-12 в AM/PM) будет выглядеть как 01, 02..12.
поэтому последняя распечатка (working2
) немного странная. Он должен сказать: 12:00:00
(отредактируйте: если вы задали часовой пояс и формат working2
, который (как указал kdagli), вы не являетесь)
Ответ 2
На самом деле последнее не странно. Код устанавливает часовой пояс для рабочей вместо работы2.
SimpleDateFormat working2 = new SimpleDateFormat("hh:mm:ss");
работает .setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
kk идет от 1 до 24, HH от 0 до 23 и hh от 1 до 12 (AM/PM).
Фиксация этой ошибки дает:
24:00:00
00:00:00
01:00:00
Ответ 3
Пожалуйста, посмотрите здесь
HH - час в день (от 0 до 23)
hh - часы в формате am/pm
kk - час в день (от 1 до 24)
мм - минута в час
ss - секунды в минуту