判断日期是否在某个日期区间内

背景:

在很多项目开发中,都有置顶或者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")

如果你们有更好的方法希望能积极留言和批评。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值