public static LocalDate parseLocalDate9(byte[] str, int off) {
        if (off + 9 > str.length) {
            return null;
        }

        char c1 = (char) str[off + 1];
        char c2 = (char) str[off + 2];
        char c4 = (char) str[off + 4];
        char c6 = (char) str[off + 6];
        char c7 = (char) str[off + 7];

        int year, month, dom;
        if ((c4 == '-' && c7 == '-')
                || (c4 == '/' && c7 == '/') // tw : yyyy/mm/d
        ) {
            year = digit4(str, off);
            month = digit2(str, off + 5);
            dom = digit1(str, off + 8);
        } else if ((c4 == '-' && c6 == '-')
                || (c4 == '/' && c6 == '/') // tw : yyyy/m/dd
        ) {
            year = digit4(str, off);
            month = digit1(str, off + 5);
            dom = digit2(str, off + 7);
        } else if (c1 == '.' && c4 == '.') {
            dom = digit1(str, off);
            month = digit2(str, off + 2);
            year = digit4(str, off + 5);
        } else if ((c2 == '.' && c4 == '.')
                || (c2 == '-' && c4 == '-')
        ) {
            dom = digit2(str, off);
            month = digit1(str, off + 3);
            year = digit4(str, off + 5);
        } else if (c1 == '-' && c4 == '-') {
            dom = digit1(str, off);
            month = digit2(str, off + 2);
            year = digit4(str, off + 5);
        } else if (c2 == '-' && c6 == '-') {
            // dd-MMM-yy
            dom = digit2(str, off);
            month = DateUtils.month((char) str[off + 3], c4, (char) str[off + 5]);
            year = digit2(str, off + 7);
            if (year != -1) {
                year += 2000;
            }
        } else if (c1 == '/' && c4 == '/') {
            // M/dd/dddd
            month = digit1(str, off);
            dom = digit2(str, off + 2);
            year = digit4(str, off + 5);
        } else if (c2 == '/' && c4 == '/') {
            // MM/d/dddd
            month = digit2(str, off);
            dom = digit1(str, off + 3);
            year = digit4(str, off + 5);
        } else {
            return null;
        }

        if ((year | month | dom) <= 0) {
            return null;
        }

        return LocalDate.of(year, month, dom);
    }
yyyy-MM-d
yyyy-M-dd
dd-MMM-yy
core/src/main/java/com/alibaba/fastjson2/util/DateUtils.java