parse - string to date java dd/mm/yyyy
Tiempo de anĂ¡lisis del formato hh: mm: ss (5)
¿Cómo puedo analizar una hora de formato hh:mm:ss
, ingresada como una cadena para obtener solo los valores enteros (ignorando los dos puntos) en java?
Según el comentario de Basil Bourque, esta es la respuesta actualizada para esta pregunta, teniendo en cuenta la nueva API de Java 8:
String myDateString = "13:24:40";
LocalTime localTime = LocalTime.parse(myDateString, DateTimeFormatter.ofPattern("HH:mm:ss"));
int hour = localTime.get(ChronoField.CLOCK_HOUR_OF_DAY);
int minute = localTime.get(ChronoField.MINUTE_OF_HOUR);
int second = localTime.get(ChronoField.SECOND_OF_MINUTE);
//prints "hour: 13, minute: 24, second: 40":
System.out.println(String.format("hour: %d, minute: %d, second: %d", hour, minute, second));
Observaciones:
- dado que la pregunta de OP contiene un ejemplo concreto de un instante que contiene solo horas, minutos y segundos (sin día, mes, etc.), la respuesta anterior solo utiliza LocalTime . Si desea analizar una cadena que también contiene días, meses, etc., se LocalDateTime . Su uso es más o menos análogo al de LocalTime.
- desde el momento en que la pregunta de int OP no contiene ninguna información sobre la zona horaria, la respuesta usa la versión LocalXXX de las clases de fecha / hora (Hora Local, Hora Local). Si la cadena de tiempo que se debe analizar también contiene información de zona horaria, entonces se debe ZonedDateTime .
====== A continuación se encuentra la respuesta antigua (original) para esta pregunta, utilizando la API pre-Java8: =====
Lo siento si voy a molestar a alguien con esto, pero en realidad voy a responder la pregunta. Las API de Java son bastante grandes, creo que es normal que alguien pierda uno de vez en cuando.
Un SimpleDateFormat podría hacer el truco aquí:
Debería ser algo así como:
String myDateString = "13:24:40";
//SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
//the above commented line was changed to the one below, as per Grodriguez''s pertinent comment:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date date = sdf.parse(myDateString);
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date); // assigns calendar to given date
int hour = calendar.get(Calendar.HOUR);
int minute; /... similar methods for minutes and seconds
Las trampas que debes tener en cuenta:
el patrón que pasa a SimpleDateFormat puede ser diferente al de mi ejemplo, dependiendo de los valores que tenga (son las horas en formato de 12 horas o en formato de 24 horas, etc.). Mira la documentación en el enlace para más detalles sobre esto
Una vez que crea un objeto Date de su String (a través de SimpleDateFormat), no se sienta tentado a utilizar Date.getHour (), Date.getMinute (), etc. Puede parecer que funcionan a veces, pero en general pueden dar malos resultados. , y como tales ahora están en desuso. Use el calendario en su lugar como en el ejemplo anterior.
Si desea extraer las horas, los minutos y los segundos, intente esto:
String inputDate = "12:00:00";
String[] split = inputDate.split(":");
int hours = Integer.valueOf(split[0]);
int minutes = Integer.valueOf(split[1]);
int seconds = Integer.valueOf(split[2]);
Un poco detallado, pero es la forma java.text.SimpleDateFormat de analizar y formatear fechas en Java:
DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
try {
Date dt = formatter.parse("08:19:12");
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int hour = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
} catch (ParseException e) {
// This can happen if you are trying to parse an invalid date, e.g., 25:19:12.
// Here, you should log the error and decide what to do next
e.printStackTrace();
}
puede usar el método toCharArray () devolver datos como: array ("1", "2", ":", "0", "1", ":", "0", "0") <- estos son char en java o puedes convertir la cadena en Date + try catch => y luego obtener hora, minutos y segundos
String time = "12:32:22";
String[] values = time.split(":");
Esto le tomará su tiempo y lo dividirá en dos puntos y pondrá el valor en una matriz, por lo que debe tener 3 valores después de esto.
Luego recorra el conjunto de cadenas y conviértalo. (con Integer.parseInt
)