Dada una fecha y hora en formato de cadena como "20 10 50", me he convertido con éxito en un SDF refiriéndose internet. Ahora ¿Cómo opero en la misma fecha que acabo de crear?
X=3600*HH+60*MM+SS
public static void main(String[] args) throws ParseException {
int numberOfTests=3;
String [] timeStamps=new String[3];
timeStamps[0]="10 10 10";
timeStamps[1]="10 10 16";
timeStamps[2]="10 10 50";
int [] X=new int[3];
DateFormat sdf = new SimpleDateFormat("hh mm ss");
Date t1=sdf.parse(timeStamps[0]);
Date t2=sdf.parse(timeStamps[1]);
Date t3=sdf.parse(timeStamps[2]);
//X=3600*HH+60*MM+SS
Esto es lo lejos que he llegado. Yo sé lo que tengo que hacer después de esto, tengo todo resuelto, pero me estoy atascado aquí.
Traté de hacerlo utilizando split
en un primer momento, pero se convirtió en complejo más adelante, así que me quedé con este método.
Si lo que desea es solicitar X = 3600*HH + 60*MM + SS
que no es necesario pasar a través de una fecha (ya sea Date
o LocalTime
) sólo tiene que utilizar elString
for (int i = 0; i < timeStamps.length; i++) {
String[] parts = timeStamps[i].split(" ");
X[i] = Integer.parseInt(parts[0]) * 3600 + Integer.parseInt(parts[1]) * 60 + Integer.parseInt(parts[2]);
}
System.out.println(Arrays.toString(X)); // [36610, 36616, 36650]
Para ver un ejemplo de un análisis, se verá que se obtiene el mismo pero más costosa con un análisis de LocalTime
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("HH mm ss");
for (int i = 0; i < timeStamps.length; i++) {
LocalTime time = LocalTime.parse(timeStamps[i], fmt);
X[i] = time.getHour() * 3600 + time.getMinute() * 60 + time.getSecond();
}
System.out.println(Arrays.toString(X)); // [36610, 36616, 36650]