You have this code:
if(timeString[i] < '0' || timeString[i] > '9') {
timeStringValid = false; // if any character is bad then the whole string is bad
When you send a '-' as part of the string, you are declaring that the whole string is invalid.
Try this:
if([glow]([/glow]timeString[i] < '0' || timeString[i] > '9'[glow]) &&
timeString[i] != '-')[/glow] {
timeStringValid = false; // if any character is bad then the whole string is bad