Подтвердить что ты не робот

Разница между 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
4b9b3361

Ответ 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 - секунды в минуту