时间 java 时间段_Java 如何判断当前时间是否在指定时间段内

前言

项目中有需求是实现类似与手机中勿扰模式的逻辑,判断当前时间点是否属于指定时间段(24H)。

实现思路

获取当前时间、开始时间、结束时间的小时数hour、分钟数minute

首先比较hour,

i. endHour > startHour,即结束时间在开始时间之后,说明这个时间段的起止时间都在同一天。

ii. endHour < startHour,即结束时间在开始时间之前,说明这个时间段是从今天开始,明天结束。

a. 若当前日期在startHour之后 || 当前日期在endHour之前,返回true

b. 否则返回false

iii. endHour = startHour,如果开始时间与结束时间小时数一样,就需要比较分钟数了,与比较小时数同理。

/*

* 判断当前时间是否在设置的dark mode时间段内

* @param date1: 开始时间(hh:mm)

* @param date2: 结束时间(hh:mm)

*/

private boolean isBelongPeriodTime(String date1, String date2){

SimpleDateFormat df = new SimpleDateFormat("HH:mm");

Date currentTime = new Date(System.currentTimeMillis());

Date startTimeDate;

Date endTimeDate;

Calendar date = Calendar.getInstance();

Calendar begin = Calendar.getInstance();

Calendar end = Calendar.getInstance();

try{

date.setTime(df.parse(df.format(currentTime)));

startTimeDate = df.parse(date1);

endTimeDate = df.parse(date2);

begin.setTime(startTimeDate);

end.setTime(endTimeDate);

if (endTimeDate.getHours() < startTimeDate.getHours()) {

if (date.after(begin) || date.before(end)) {

Log.d(TAG, "current time is belong to " + date1 + " - " + date2);

return true;

}else {

Log.d(TAG, "current time isn't belong to " + date1 + " - " + date2);

return false;

}

}else if(endTimeDate.getHours() == startTimeDate.getHours()){

if (endTimeDate.getMinutes() < startTimeDate.getMinutes()) {

if (date.after(begin) || date.before(end)) {

Log.d(TAG, "current time is belong to " + date1 + " - " + date2);

return true;

}else {

Log.d(TAG, "current time isn't belong to " + date1 + " - " + date2);

return false;

}

}

}

}catch(ParseException e){

e.printStackTrace();

}

//这里是时间段的起止都在同一天的情况,只需要判断当前时间是否在这个时间段内即可

if (date.after(begin) && date.before(end)) {

Log.d(TAG, "current time is belong to " + date1 + " - " + date2);

return true;

}else {

Log.d(TAG, "current time isn't belong to " + date1 + " - " + date2);

return false;

}

}

记个Date的after()方法应用,以后复制用

/*

** 判断当前时间是否在传入的时间之后

*/

private boolean isAfterTime(String time){

SimpleDateFormat df = new SimpleDateFormat("HH:mm");

Date currentTime = new Date(System.currentTimeMillis());

Calendar curTime = Calendar.getInstance();

Calendar scaTime = Calendar.getInstance();

try{

Date timeScale = df.parse(time);

curTime.setTime(df.parse(df.format(currentTime)));

scaTime.setTime(timeScale);

}catch (ParseException e){

e.printStackTrace();

}

if (curTime.after(scaTime)) {

return true;

}else {

return false;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值