美文网首页
兼容RSQL 查询DateTime 带空格无法解析问题

兼容RSQL 查询DateTime 带空格无法解析问题

作者: 大继 | 来源:发表于2020-09-09 10:15 被阅读0次

问题

再使用RSQL的时候由于日期带上了空格.
rsql=createTime==2020-09-09 10:08:00
导致RSQL解析器无法通过。最好的方法当然是修复解析器,但是。项目比较忙先用简单的方式来解决。

解决方法

1.在 GenericRsqlSpecification里面修复日期的格式的读取

 //使用T兼容RSQLParser日期格式带空格的问题.
private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

2.在RSQL解析前使用正则转换时间格式带上T

    private static Pattern dateTimePattern = Pattern.compile("([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2})");

/**
     * 补充时间格式中间的T
     * @param rsql
     * @return
     */
    public static String fillDateTimeT(String rsql){
        Matcher matcher = dateTimePattern.matcher(rsql);

        while (matcher.find()){
           String dateTimeStr = matcher.group();
           String dateTimeTStr = matcher.group().replace(" ","T");

           rsql = rsql.replace(dateTimeStr,dateTimeTStr);
        }

        return rsql;
    }

3.测试

public static void main(String[] args) {

        String timeRsql = "createTime==2020-08-31 11:34:00;beginTime==2020-08-21 11:34:00";

        String  result = RsqlUtil.fillDateTimeT(timeRsql);

        //createTime==2020-08-31T11:34:00;beginTime==2020-08-21T11:34:00

        System.out.println(result);
    }

相关文章

网友评论

      本文标题:兼容RSQL 查询DateTime 带空格无法解析问题

      本文链接:https://www.haomeiwen.com/subject/bedjektx.html