if (charAt(s, end) == '-') {
sep = charAt(s, end);
if (sep != '-') {
throw new NumberFormatException("Expected date to be dash-separated, got '" + sep + "'");
if (Character.isDigit(charAt(s, start))) {
sep = charAt(s, end);
if (sep != ':') {
throw new NumberFormatException("Expected time to be colon-separated, got '" + sep + "'");
sep = charAt(s, end);
if (sep != ':') {
throw new NumberFormatException("Expected time to be colon-separated, got '" + sep + "'");
if (charAt(s, start) == '.') {
end = firstNonDigit(s, start + 1);
num = number(s, start + 1, end);
sep = charAt(s, start);
if (sep == '-' || sep == '+') {
int tzsign = (sep == '-') ? -1 : 1;
sep = charAt(s, start);
if (sep == ':') {
end = firstNonDigit(s, start + 1);
sep = charAt(s, start);