传入参数----String类型时间-----标准化
问题一:获取到的String类型时间可能为: 1. 时间戳 2. "YYYY-MM-DD"
解决方式:统一为时间戳 或者 统一为"YYYY-MM-DD" 或者 统一为 "YYYY-MM-DD HH:mm:ss"
问题二:通过时间区间 [ a, b ] 查询数据时 当传入时间为yyyy-MM-dd或者 yyyy-MM-dd 00:00:00 或者其对应的时间戳时,查询到的值会变成[ a, b)
解决方式一: 数据库 时间转化为yyyy-MM-dd再和b比较大小
解决方式二:用 [ a, b 23:59:59 ] 来避免 数据库字段操作
下面为统一转化时间的代码,附加闭区间
知识点:if else if return boolean?a:b 重载 关键参数命名尽量详尽
目的:代码干净,高阅读性
/** 仅过滤 */
private static String getRealDateFromDateString(String date){
return getRealDateFromDateString(date,false);
}
/** String类型时间转为"YYYY-MM-DD HH:mm:ss" */
private static String getRealDateFromDateString(String date,Boolean changeDateToLastSecondOfDate){
if (date == null || date.trim().length()<10) {
return null;
}
date = date.trim();
if (!(date.contains("-")) && !(date.contains("/"))) { //date为时间戳
if (date.length()!= 10 && date.length()!=13) {
return null;
}
try {
date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new Date(new Long(date.length() == 10? date+"000":date)));
}catch (Exception e){
return null;
}
}else {
date = date.replaceAll("/", "-"); //date非时间戳
if (date.length() == 10) {
return date + (changeDateToLastSecondOfDate?" 23:59:59":" 00:00:00");
}
if (date.length() < 19) {
return null;
}
date = date.substring(0, 19);
}
return changeDateToLastSecondOfDate?date.replace("00:00:00","23:59:59"):date;
}
5253

被折叠的 条评论
为什么被折叠?



