1

I'm new to groovy and i want to convert 24 hour format to 12 hour format. What is the code to be used for it? Is there any built-in methods?

I just want groovy code not java one

Ramya R
  • 13
  • 3

2 Answers2

2

Kevin's answer is correct, and should get the tick... I only post this as it's slightly shorter

import java.time.*
import static java.time.format.DateTimeFormatter.ofPattern

String time = '13:23:45'

String result = LocalTime.parse(time).format(ofPattern('h:mm:ss a'))
println result
tim_yates
  • 167,322
  • 27
  • 342
  • 338
1

I thought this question is somewhat similar to the How to convert 24 hr format time in to 12 hr Format?. It just that Java and Groovy share a lot of similarities. To point that out, I took Cloud's answer from the mentioned question and converted that to Groovy.

import java.time.LocalTime
import java.time.format.DateTimeFormatter

final String time = "21:49"

String result = LocalTime.parse(time, DateTimeFormatter.ofPattern("HH:mm")).format(DateTimeFormatter.ofPattern("hh:mm a"));

println(result)

If you want to build your own time function you can try to customize the code below.

final String time = "21:49"

final String _24to12( final String input ){
    if ( input.indexOf(":") == -1 )  
        throw ("")

    final String []temp = input.split(":")

    if ( temp.size() != 2 )
        throw ("")  // Add your throw code
                    // This does not support time string with seconds

    int h = temp[0] as int  // if h or m is not a number then exception
    int m = temp[1] as int  // java.lang.NumberFormatException will be raised
                            // that can be cached or just terminate the program
    String dn

    if ( h < 0 || h > 23 )
        throw("")  // add your own throw code
                   // hour can't be less than 0 or larger than 24

    if ( m < 0 || m > 59 )
        throw("")  // add your own throw code 
                   // minutes can't be less than 0 or larger than 60

    if ( h == 0 ){
        h = 12
        dn = "AM"
    } else if ( h == 12 ) {
        dn = "PM"
    } else if ( h > 12 ) {
        h = h - 12
        dn = "PM"
    } else {
        dn = "AM"
    }

    return h.toString() + ":" + m.toString() + " " + dn.toString()
}

println(_24to12(time))
Kevin Ng
  • 2,146
  • 1
  • 13
  • 18