0

I'm converting 12-hour style time to 24-hour. The problem is that when seconds are "00" they are not printed in spite of the formatter pattern. Why is this happening and how to print zero seconds?

public static void main(String[] args) {
        String time_1 = "07:05:40PM";
        String time_2 = "07:05:00PM";

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm:ssa");

        System.out.println("time_1 " + LocalTime.parse(time_1, formatter));
        System.out.println("time_2 " + LocalTime.parse(time_2, formatter));
    }

The output is:

time_1 19:05:40
time_2 19:05
Arvind Kumar Avinash
  • 71,965
  • 6
  • 74
  • 110
IKo
  • 4,998
  • 8
  • 34
  • 54

1 Answers1

1

Use DateTimeFormatterBuilder#parseCaseInsensitive to parse the time in case-insensitive manner. Also, make sure to use the appropriate format to print the time.

Do it as

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;

public class Main {
    public static void main(final String[] args) {
        String time_1 = "07:05:40PM";
        String time_2 = "07:05:00PM";

        // Format to parse input time-string
        DateTimeFormatter formatter1 = new DateTimeFormatterBuilder()
                .parseCaseInsensitive()
                .appendPattern("hh:mm:ssa")
                .toFormatter();

        // 24-hour format
        DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("HH:mm:ss");

        System.out.println("time_1 " + LocalTime.parse(time_1, formatter1));
        System.out.println("time_2 " + LocalTime.parse(time_2, formatter1));
        System.out.println("time_2 " + formatter1.format(LocalTime.parse(time_2, formatter1)));
        System.out.println("time_2 " + formatter2.format(LocalTime.parse(time_2, formatter1)));
    }
}

Output:

time_1 19:05:40
time_2 19:05
time_2 07:05:00pm
time_2 19:05:00
Arvind Kumar Avinash
  • 71,965
  • 6
  • 74
  • 110