En mi aplicación, tengo el requisito de formatear 12 horas de tiempo a 24 horas de tiempo. ¿Cuál es el método que tengo que usar?Conversión de 12 horas a 24 horas en java
Por ejemplo, hora como 10:30 AM. ¿Cómo puedo convertir a 24 horas en java?
En mi aplicación, tengo el requisito de formatear 12 horas de tiempo a 24 horas de tiempo. ¿Cuál es el método que tengo que usar?Conversión de 12 horas a 24 horas en java
Por ejemplo, hora como 10:30 AM. ¿Cómo puedo convertir a 24 horas en java?
Prueba esto:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String [] args) throws Exception {
SimpleDateFormat displayFormat = new SimpleDateFormat("HH:mm");
SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a");
Date date = parseFormat.parse("10:30 PM");
System.out.println(parseFormat.format(date) + " = " + displayFormat.format(date));
}
}
que produce:
10:30 PM = 22:30
Ver: http://download.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html
Suponiendo que usa SimpleDateFormat implícita o explícitamente, necesita usar H
en lugar de h
en la cadena de formato.
por ejemplo
HH:mm:ss
en lugar de
hh:mm:ss
SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a");
respuesta proporcionada por Bart Kiers debe sustituirse por somethig como
SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a",Locale.UK);
intenta esto
public static String convertTo24Hour(String Time) {
DateFormat f1 = new SimpleDateFormat("hh:mm a"); //11:00 pm
Date d = null;
try {
d = f1.parse(Time);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DateFormat f2 = new SimpleDateFormat("HH:mm");
String x = f2.format(d); // "23:00"
return x;
}
En Java 8 y versiones posteriores, se podría hacer en una línea utilizando la clase java.time.LocalTime. Código de ejemplo:
String result = LocalTime.parse(time, DateTimeFormatter.ofPattern("hh:mm a")).format(DateTimeFormatter.ofPattern("HH:mm"));
que estaba buscando lo mismo, pero en número, significa desde un entero horas xx, xx minutos y AM/PM a 24 horas horas formato xx y xx minutos, así que aquí lo que he hecho:
private static final int AM = 0;
private static final int PM = 1;
/**
* Based on concept: day start from 00:00AM and ends at 11:59PM,
* afternoon 12 is 12PM, 12:xxAM is basically 00:xxAM
* @param hour12Format
* @param amPm
* @return
*/
private int get24FormatHour(int hour12Format,int amPm){
if(hour12Format==12 && amPm==AM){
hour12Format=0;
}
if(amPm == PM && hour12Format!=12){
hour12Format+=12;
}
return hour12Format;
}`
private int minutesTillMidnight(int hour12Format,int minutes, int amPm){
int hour24Format=get24FormatHour(hour12Format,amPm);
System.out.println("24 Format :"+hour24Format+":"+minutes);
return (hour24Format*60)+minutes;
}
Usando LocalTime en Java 8, LocalTime tiene muchos métodos útiles como getHour()
o el método getMinute()
,
Por ejemplo,
LocalTime intime = LocalTime.parse(inputString, DateTimeFormatter.ofPattern("h:m a"));
String outtime = intime.format(DateTimeFormatter.ISO_LOCAL_TIME);
En algunos casos, la primera línea solo puede hacer el análisis requerido
Duplicate Answer; ver [respuesta original de Cloud] (https://stackoverflow.com/a/37388524/642706). Y el código que se ve aquí falla, habiendo omitido un ESPACIO que se encuentra en los datos de la Pregunta. –
LocalTime de forma predeterminada da el formato de 24 horas, por lo que la primera línea dará el formato requerido, no es necesario formatearlo de nuevo y no tengo permisos para comentar en la respuesta de la nube – venkata
¿* solo * tiene una hora o también una fecha? –
@JonSkeet: only time – Swift