背景:
在很多项目开发中,都有置顶或者top类目,在置顶时会设置一个置顶时间,在这个时间段内时置顶状态。
Date日期类型和String类型转换
Date日期转String再转回Date
如果是要获取当前时间可以使用new Date();但是这个获取的日期是yyyy-MM-dd日期类型,这对于置顶这个功能来说并不能用。
举个例子:比如我要置顶某个产品一天,如2020-08-11 – 2020-08-11,通过new Date()来获取是否在这个日期区间内是不行的。
这里就要使用日期类型转换一下:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String day = sdf.format(Calendar.getInstance().getTime());
Date today = sdf.parse(day);
这样获取的日期就是Date类型yyyy-MM-dd HH:mm:ss,这样就可以和日期类型的进行比较啦。
日期比较
假设一个日期区间:
Date dayBefore = "2020-08-11 00:00:00";
Date DatAfter = "2020-08-11 23:59:59";
判断today是否在dayBefore 和DatAfter这个日期区间内:
//判断today是否在dayBefore之后
boolean after = today.after(dayBefore);
//判断 today是否在DatAfter之前
boolean before = today.before(DatAfter);
//当true == after 和 true == before 同时成立时就是在此日期区间内
if(true == after && true == before ){
return true;
}
前端传值问题
在选置顶区间日期值时,前端给传的值是yyyy-MM-dd类型,也就是到后端存入数据库的时候需要自行转换一下。也就是前端如果传2020-08-11 – 2020-08-21,后端存值:2020-08-11 00:00:00 - 2020-08-21 23:59:59才行。这也需要日期类转换。如果前端传的日期值是String类型的则只需要转换为Date类型存入数据库即可,上面写的有方法。
以转换后边日期为例:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
//首先将前端传的值after(Date类型)转换为yyyy-MM-dd类型的
String end = sdf1.format(after);
//将end转换为Date类型的(yyyy-MM-dd HH:mm:ss)
Date newAfter = sdf.parse(end+" 23:59:59")
如果你们有更好的方法希望能积极留言和批评。