我正在处理我需要用户在终端窗口中输入值的内容,例如:
开始时间:0800
结束时间:1200
然后我需要检查这个人的开始和结束时间是否在一个范围内。因此,如果工作时间是0900 - 1700,现在是11:45,则上述用户将显示为可用,而如果是1201,则上述用户将无法使用。
目前我只是把时间拉成一个字符串:
void setWorkHours(String hrs)
{
this.hours=hrs;
}
public String getWorkHours()
{
return hours;
}
任何帮助都非常感激。
干杯
答案 0 :(得分:2)
如果用户可以输入开始日期和时间以及结束日期和时间,那会更好。这将允许用户一次输入整个星期。
然而,解决方案几乎相同。
答案 1 :(得分:1)
我不打算为你做功课,但我会给你以下建议:
System.in
)ints
:startHours
,startMins
,endHours
,endMins
。或者您可能会使用Java的Date
或Calendar
对象。还有其他选择,您需要选择最适合您的选项。bool isInOfficeHours(int hours, in mins)
这样的东西。此方法的参数应该与您用于存储办公时间的数据类型匹配。我希望这会对你有所帮助。
答案 2 :(得分:0)
下面是将在startTime和endTime中使用两个字符串的代码,并将与您必须定义范围的范围对象进行比较。我已经发表评论来解释代码。
/*
* this method will split hhmm time into two parts.
*/
public String[] getTimeHHMM(String time){
String hhmm[] = new String[2];
if(time !=null && time.length() > 1){
hhmm[0] = time.substring(0, time.length() - 2);
hhmm[1] = time.substring(time.length() - 2, time.length());
}
else{
// time not formatted correctly so deal with here
hhmm[0] = "";
hhmm[1] = time;
}
return hhmm;
}
//assuming hrs is a string containing only one time in the format hhmm
String startTime[] = getTimeHHMM(startTimeStr);
String endTime[] = getTimeHHMM(endTimeStr);
int startTimeHrs = Integer.parseInt(startTime[0]);
int startTimeMins = Integer.parseInt(startTime[1]);
int endTimeHrs = Integer.parseInt(endTime[0]);
int endTimeMins = Integer.parseInt(endTime[1]);
Date start = new Date();
Date end = new Date();
Calendar start = Calendar.getInstance();
start.set(Calendar.HOUR_OF_DAY, startHrs);
start.set(Calendar.MINUTE, startMins );
Calendar end = Calendar.getInstance();
end.set(Calendar.HOUR_OF_DAY, endHrs);
end.set(Calendar.MINUTE, endMins );
///lets say the range is startRange and endRange it should be Calendar instances, you will need to construct these as I did above with setting your range whatever you like
Calendar endRange;
Calendar startRange;
if(start.compareTo(startRange) >= 0 && end.compareTo(endRange) <=0 ){
// Here it means it is within working hours
}