问题
再使用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);
}
网友评论