Compte tenu de la date et l'heure au format chaîne comme « 20 10 50 », je l'ai converti avec succès en un SDF en se référant à l'Internet. Maintenant, comment puis-je fonctionne à la même date que je viens de créer?
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
C'est de savoir jusqu'où je suis arrivé. Je sais ce que je dois faire après cela, je l'ai tout réglé, mais je suis coincé ici se.
J'ai essayé de le faire en utilisant split
au début, mais il est devenu complexe plus tard, donc je collé à cette méthode.
Si vous voulez juste d'appliquer X = 3600*HH + 60*MM + SS
vous n'avez pas besoin de passer par une date (soit Date
ou LocalTime
) il suffit d' utiliser laString
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]
Pour voir un exemple avec une analyse syntaxique, vous verrez que vous obtenez la même chose, mais plus coûteux avec une analyse syntaxique à 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]