Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE

1. Overview

Converting between two different time formats is a common programming task. Java provides a standard API for time manipulation.

In this tutorial, we’ll explore how to convert the 12-hour time format to the 24-hour time format using the Date Time API and the legacy Date API.

2. Using the Date Time API

The Date Time API introduced in Java 8 provides a class to format time using different patterns. The 12-hour time and 24-hour time both have different patterns of representation.

Here’s an example that converts 12-hour time to 24-hour time using the Date Time API:

@Test
void givenTimeInTwelveHours_whenConvertingToTwentyHoursWithDateTimeFormatter_thenConverted() throws ParseException {
    String time = LocalTime.parse("06:00 PM", DateTimeFormatter.ofPattern("hh:mm a", Locale.US))
      .format(DateTimeFormatter.ofPattern("HH:mm"));
    assertEquals("18:00", time);
}

In the code above, we parse a 12-hour time string to the LocalTime object by invoking the parse() method on the LocalTime class.

The parse() method takes two arguments – the string to parse and a DateTimeFormatter that specifies the format of the string.

Next, we format the time to the 12-hour format by invoking the ofPattern() method on DateTimeFormatter. The pattern for 12-hour time is “hh:mm a.

Furthermore, we convert the 12-hour time to 24-hour time by invoking the format() method on the parsed time and setting the pattern to “HH:mm“, which represents the 24-hour time format.

3. Using the Legacy Date API

Simply put, we can use SimpleDateFormat with the legacy Date API to convert 12-hour time to 24-hour time.

To use the legacy Date API, we’ll parse a string to a Date type in the 12-hour time format:

@Test
public void givenTimeInTwelveHours_whenConvertingToTwentyHours_thenConverted() throws ParseException {
    SimpleDateFormat displayFormat = new SimpleDateFormat("HH:mm");
    SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a");
    Date date = parseFormat.parse("06:00 PM");
    assertEquals("18:00", displayFormat.format(date));
}

Here, we create an instance of SimpleDateFormat to format the time to the 24-hour equivalent by specifying the pattern. Finally, we assert that the converted time matches the expected 24-hour time format.

4. Conclusion

In this article, we learned two different ways to convert time from the 12-hour time format to the 24-hour time format. Additionally, we used the DateTimeFormatter class from the Date Time API and the SimpleDateFormat class of the legacy Date API to implement the conversion process.

As always, the complete source code for the examples is available over on GitHub.

Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE
res – REST with Spring (eBook) (everywhere)
Comments are open for 30 days after publishing a post. For any issues past this date, use the Contact form on the site.