解决时间筛选时格式不统一的问题

在前端用户操作日志展示中遇到时间筛选问题,由于日期选择器传的字符串时间与数据库datetime格式不一致,导致比较错误。解决方案是在后台使用SimpleDateFormat将字符串转为datetime,并在前端请求接口时将时间参数格式调整为yyyy-MM-dd HH:mm:ss,从而实现有效的时间筛选功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在写常用的用户操作日志在前端显示的问题,要对用户的操作时间进行分时间段的查找和筛选,出现了时间比较时格式不统一的问题
在前端写了两个日期选择器,定义了一个初始时间和结束时间

<el-date-picker
     v-model="dataFilter.stratDate"
     type="date"
     :picker-options="dataFilter.stratDate"
     placeholder="选择日期"
     value-format="yyyy-MM-dd"
     @change="eventSearch">
</el-date-picker>
&nbsp;<span></span>&nbsp;
<el-date-picker
     v-model="dataFilter.endDate"
     type="date"
     :picker-options="dataFilter.endDate"
     value-format="yyyy-MM-dd"
     placeholder="选择日期" 
     @change="eventSearch">
</el-date-picker>
dataFilter:{
    stratDate:"",
    endDate:"",
},

效果如图:
在这里插入图片描述
所以在这里请求后台接口传的参数时是字符串类型,而在数据库中createTime的类型是datetime
在这里插入图片描述
类型不统一 ,就无法进行时间的比较,所以需要在后台代码中对传过去的startDate和endDate用SimpleDateFormat将字符串类型转换成和数据库一致的时间类型

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private String startDate;
private String endDate;
public String getStartDate() {
	return startDate;
}
public void setStartDate(String startDate) {
	this.startDate = startDate;
}
public String getEndDate() {
	return endDate;
}
public void setEndDate(String endDate) {
	this.endDate = endDate;
}

时间比较:

if (getStartDate()!=null) {
	try {
		rule.add(Restrictions.ge("createTime", sdf.parse(getStartDate())));
	} catch (ParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}
		
if (getEndDate()!=null) {
	try {
		rule.add(Restrictions.le("createTime", sdf.parse(getEndDate())));
	} catch (ParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

此时时间比较依旧报错,仔细查看后发现前台传的格式是yyyy-MM-dd,时间格式是yyyy-MM-dd HH:mm:ss,所以需要在前端请求接口时穿的参数需要加上HH:mm:ss

const params = new FormData();
var dateStart = this.dataFilter.stratDate == null ? "" : this.dataFilter.stratDate;
var dateEnd = this.dataFilter.endDate == null ? "" : this.dataFilter.endDate;
params.append("dateFrom", dateStart== ''?'': dateStart+" 00:00:00");
params.append("dateTo", dateEnd==''?'': dateEnd+ " 23:59:59");

如此时间筛选就好用了,筛选效果图涉及内容较多,所以就不粘贴了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值