使用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