Esempio generale che copre tutto, vedi se riesci a migliorarlo
codice:
public static int[] scanTime(String timeStr){
char[] chars = timeStr.toCharArray();
String[] tm = {"0","0","0"};
int[] time = {0,0,0};
int t = 0;
for(char i : chars) {
if (Character.isDigit(i))
tm[t] += i;
else if (i == '.' || i == ':')
t++;
else break;
}
for(; t > -1; t--) {
int val = Integer.parseInt(tm[t]);
switch(t) {
case 0:
if(val > 24) continue;
case 1:
case 2:
if(val < 0 || val > 60) continue;
break;
}
time[t] = val;
}
return time;
}