tighten up checks for bad values (eg "25:01:10Z")