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;
    }