使用Java查看当前时间是否在当天的特定时间范围内

我确信这在1000个不同的地方完成了1000次。问题是我想知道是否有更好/标准/更快的方法来检查当前“时间”是否在hh:mm:ss格式指定的两个时间值之间。例如,我的大业务逻辑不应在之间运行18:00:00

and 18:30:00。所以这就是我的想法:

 public static  boolean isCurrentTimeBetween(String starthhmmss, String endhhmmss) throws ParseException{

DateFormat hhmmssFormat = new SimpleDateFormat("yyyyMMddhh:mm:ss");

Date now = new Date();

String yyyMMdd = hhmmssFormat.format(now).substring(0, 8);

return(hhmmssFormat.parse(yyyMMdd+starthhmmss).before(now) &&

hhmmssFormat.parse(yyyMMdd+endhhmmss).after(now));

}

示例测试用例:

  String doNotRunBetween="18:00:00,18:30:00";//read from props file

String[] hhmmss = downTime.split(",");

if(isCurrentTimeBetween(hhmmss[0], hhmmss[1])){

System.out.println("NOT OK TO RUN");

}else{

System.out.println("OK TO RUN");

}

我正在寻找的是更好的代码

  • 在表现
  • 在外观上
  • 正确地

我不想要的

  • 第三方库
  • 异常处理辩论
  • 变量命名约定
  • 方法修饰符问题

回答:

这就是您需要做的所有事情,此方法与输入松散耦合且高度一致。

boolean isNowBetweenDateTime(final Date s, final Date e)

{

final Date now = new Date();

return now.after(s) && now.before(e);

}

如何获取Date对象的开始和结束与比较它们无关。通过传递String表示,使事情变得比您需要的复杂。

这是获得开始日期和结束日期的更好方法,而且松散耦合且高度一致。

private Date dateFromHourMinSec(final String hhmmss)

{

if (hhmmss.matches("^[0-2][0-9]:[0-5][0-9]:[0-5][0-9]$"))

{

final String[] hms = hhmmss.split(":");

final GregorianCalendar gc = new GregorianCalendar();

gc.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hms[0]));

gc.set(Calendar.MINUTE, Integer.parseInt(hms[1]));

gc.set(Calendar.SECOND, Integer.parseInt(hms[2]));

gc.set(Calendar.MILLISECOND, 0);

return gc.getTime();

}

else

{

throw new IllegalArgumentException(hhmmss + " is not a valid time, expecting HH:MM:SS format");

}

}

现在,您可以进行两个命名良好的方法调用,这将很容易进行自我记录。

以上是 使用Java查看当前时间是否在当天的特定时间范围内 的全部内容, 来源链接: utcz.com/qa/427197.html

回到顶部