Cómo convertir el formato de 24 horas en formato de 12 horas?

En mi aplicación, quiero convertir el CDT dado en formato de cadena de 24 horas en CDT con formato de cadena de 12 horas, ¿Cómo convertir una cadena de formato de 24 horas en una cadena de formato de 12 horas?

puede intentar usar un objeto SimpleDateFormat para convertir los formatos de tiempo.

 final String time = "23:15"; try { final SimpleDateFormat sdf = new SimpleDateFormat("H:mm"); final Date dateObj = sdf.parse(time); System.out.println(dateObj); System.out.println(new SimpleDateFormat("K:mm").format(dateObj)); } catch (final ParseException e) { e.printStackTrace(); } 

aquí está el enlace javadoc para SimpleDateFromat.

Aquí está el código para convertir las 24 horas a 12 horas con AM y PM. Si no quiere AM / PM, simplemente reemplace hh:mm a con hh:mm .

 import java.text.SimpleDateFormat; import java.util.Date; public class Main { public static void main(String [] args) throws Exception { try { String _24HourTime = "22:15"; SimpleDateFormat _24HourSDF = new SimpleDateFormat("HH:mm"); SimpleDateFormat _12HourSDF = new SimpleDateFormat("hh:mm a"); Date _24HourDt = _24HourSDF.parse(_24HourTime); System.out.println(_24HourDt); System.out.println(_12HourSDF.format(_24HourDt)); } catch (Exception e) { e.printStackTrace(); } } } //OUTPUT WILL BE //Thu Jan 01 22:15:00 IST 1970 //10:15 PM 

Otra solución:

 System.out.println(hr%12 + ":" + min + " " + ((hr>=12) ? "PM" : "AM")); 

En Java 8 podría hacerse en una línea utilizando la clase java.time.LocalTime .

Ejemplo de código:

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

Para Android anterior, use el proyecto ThreeTen-Backport , adaptado para Android en el proyecto ThreeTenABP . Consulte Cómo utilizar ThreeTenABP en el Proyecto Android .

 int n=2; int result= n-12; if (result>o) { system.out.println(result+"pm"); } else { system.out.prinln(result+"am"); } 

Puede usar Scanner si quiere recibir información del usuario. Espero que esto sea simple. 12 for time 🙂

En caso de que tenga curiosidad acerca de la diferencia entre K, k y H, h:

H Hora en día (0-23) Número 0 1+

k Hora en día (1-24) Número 24 1+

Hora K en am / pm (0-11) Número 0 1+

h Hora en am / pm (1-12) Número 12 1+

Para alguien con una versión de API más baja, trabaje bien con 12:00 AM o PM y min <10

  String time = ((hourOfDay > 12) ? hourOfDay % 12 : hourOfDay) + ":" + (minute < 10 ? ("0" + minute) : minute) + " " + ((hourOfDay >= 12) ? "PM" : "AM") 

salida, por ej. 0:0 AM 12:00 PM 9:09 AM

gracias a @Lalit Jawale respuesta anterior

 // time is your string value ie, 24 hour time try { final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); final Date dateObj = sdf.parse(time); time = new SimpleDateFormat("hh:mm aa").format(dateObj); } catch (final ParseException e) { e.printStackTrace(); } 

SimpleDateFormat with (K: mm) funciona bien, pero no funcionará correctamente con la hora 12:00 AM o 12:00 PM

Puede usar el código anterior para convertir el formato de 12 horas del formato de 24 horas junto con AM / PM … Funciona

Siga el siguiente código:

Haga un método común y llame desde donde necesite:

MÉTODO COMÚN PARA CAMBIAR EL TIEMPO:

  public static String parseTime(String date, String inFormat, String outFormat) { try { Date date1 = new SimpleDateFormat(inFormat, Locale.getDefault()).parse(date); SimpleDateFormat dateFormat = new SimpleDateFormat(outFormat, Locale.getDefault()); return dateFormat.format(date1); } catch (ParseException e) { e.printStackTrace(); } return null; } 

MÉTODO CONSTANTE:

 public static final String SERVER_TIME_RESOURCES_FORMAT = "HH:mm:ss"; public static final String SERVER_TIME_FORMAT = "HH:mm:ss.SSS"; 

LLAME A PARTIR DE CUÁNDO NECESITO:

 CommonMethods.parseTime(//your date, Constants.SERVER_TIME_RESOURCES_FORMAT, Constants.LOCAL_TIME_FORMAT);