Java 把时间分成相等的间隔
我想,如果用户输入Java 把时间分成相等的间隔,java,android,Java,Android,我想,如果用户输入到和从时间,那么代码应该计算30分钟的间隔,除了除了字段中提到的时间 差不多 如果输入是 from=10:00 to=14:00 except from=11:10 to=11:45 and from=13:10 to=13:30 那么输出应该是 10:00 10:30 12:00 12:30 13:30 我的代码类似于: DateFormat df = new SimpleDateFormat("HH:mm"); C
到
和从
时间,那么代码应该计算30分钟的间隔,除了除了
字段中提到的时间
差不多
如果输入是
from=10:00
to=14:00
except
from=11:10
to=11:45
and
from=13:10
to=13:30
那么输出应该是
10:00
10:30
12:00
12:30
13:30
我的代码类似于:
DateFormat df = new SimpleDateFormat("HH:mm");
Calendar startTime = Calendar.getInstance();
startTime.set(Calendar.HOUR_OF_DAY, 8);
startTime.set(Calendar.MINUTE, 0);
Calendar endTime = Calendar.getInstance();
endTime.set(Calendar.HOUR_OF_DAY, 17);
endTime.set(Calendar.MINUTE, 30);
while (startTime.get(Calendar.HOUR_OF_DAY)!=endTime.get(Calendar.HOUR_OF_DAY)&&startTime.get(Calendar.MINUTE)!=endTime.get(Calendar.MINUTE)) {
System.out.println(df.format(startTime.getTime()));
startTime.add(Calendar.MINUTE, 30);
}
这段时间应该有!=而不是==。除非是另一个条件。当循环运行时,只要内部的条件为真经过一小时的RND后,我找到了解决方案 ExceptDate的模型类
public class ExceptDate{
ExceptDate(String from,String to){
this.from=from;
this.to=to;
}
private String from;
private String to;
public void setFrom(String from){
this.from = from;
}
public String getFrom(){
return from;
}
public void setTo(String to){
this.to = to;
}
public String getTo(){
return to;
}
}
输入变量:
String strFromTime = "10:00";
String strToTime = "14:00";
ArrayList<ExceptDate> exceptTime = ArrayList < String > ()
exceptTime.add(new ExceptDate("11:10", "11:45"));
exceptTime.add(new ExceptDate("13:10", "13:30"));
String strFromTime=“10:00”;
字符串strotime=“14:00”;
ArrayList exceptTime=ArrayList()
添加(新的例外日期(“11:10”、“11:45”);
添加(新的例外日期(“13:10”、“13:30”);
最后一种方法是魔术
public ArrayList<String> getTimeSlot(int slotMinute, strFromTime, strToTime, exceptTime) {
int fromHour, fromMinute, toHour, toMinute;
fromHour = Integer.parseInt(strFromTime.split(":")[0]);
fromMinute = Integer.parseInt(strFromTime.split(":")[1]);
toHour = Integer.parseInt(strToTime.split(":")[0]);
toMinute = Integer.parseInt(strToTime.split(":")[1]);
long slot = slotMinute * 60 * 1000;
Calendar calendar2 = Calendar.getInstance();
calendar2.set(Calendar.HOUR_OF_DAY, fromHour);
calendar2.set(Calendar.MINUTE, fromMinute);
long currentTime = calendar2.getTimeInMillis();
Calendar calendar1 = Calendar.getInstance();
calendar1.set(Calendar.HOUR_OF_DAY, toHour);
calendar1.set(Calendar.MINUTE, toMinute);
long endTime = calendar1.getTimeInMillis();
ArrayList<String> timeSlot = new ArrayList<String>();
while (currentTime < endTime) {
if (availableDatesItem.getExcept() == null) {
timeSlot.add(sdfTime.format(new Date(currentTime)));
currentTime = currentTime + slot;
} else {
for (int i = 0; i < exceptTime.size(); i++) {
int exceptFromHour, exceptFromMinute, exceptToHour, exceptToMinute;
exceptFromHour = Integer.parseInt(exceptTime.get(i).getFrom().split(":")[0]);
exceptFromMinute = Integer.parseInt(exceptTime.get(i).getFrom().split(":")[1]);
exceptToHour = Integer.parseInt(exceptTime.get(i).getTo().split(":")[0]);
exceptToMinute = Integer.parseInt(exceptTime.get(i).getTo().split(":")[1]);
Calendar cal2 = Calendar.getInstance();
cal2.set(Calendar.HOUR_OF_DAY, exceptFromHour);
cal2.set(Calendar.MINUTE, exceptFromMinute);
long exceptFrom = cal2.getTimeInMillis();
Calendar cal1 = Calendar.getInstance();
cal1.set(Calendar.HOUR_OF_DAY, exceptToHour);
cal1.set(Calendar.MINUTE, exceptToMinute);
long exceptTo = cal1.getTimeInMillis();
if (currentTime < exceptFrom) {
timeSlot.add(sdfTime.format(new Date(currentTime)));
currentTime = currentTime + slot;
} else if (currentTime > exceptFrom && currentTime > exceptTo) {
timeSlot.add(sdfTime.format(new Date(currentTime)));
currentTime = currentTime + slot;
} else {
currentTime = currentTime + slot;
}
}
}
}
return timeSlot;
}
public ArrayList getTimeSlot(int-slotMinute、strFromTime、strotime、exceptTime){
int fromHour,fromMinute,toHour,toMinute;
fromHour=Integer.parseInt(strFromTime.split(“:”[0]);
fromMinute=Integer.parseInt(strFromTime.split(“:”[1]);
toHour=Integer.parseInt(strotime.split(“:”[0]);
toMinute=Integer.parseInt(strotime.split(“:”[1]);
长槽=槽分钟*60*1000;
Calendar calendar2=Calendar.getInstance();
calendar2.set(Calendar.HOUR\u OF_DAY,fromHour);
calendar2.set(Calendar.MINUTE,fromMinute);
long currentTime=calendar2.getTimeInMillis();
Calendar calendar1=Calendar.getInstance();
calendar1.set(Calendar.HOUR\u OF_DAY,toHour);
calendar1.set(Calendar.MINUTE,toMinute);
long-endTime=calendar1.getTimeInMillis();
ArrayList时隙=新建ArrayList();
while(当前时间<结束时间){
if(AvailableDataItem.GetException()==null){
添加(sdfTime.format(新日期(当前时间));
currentTime=currentTime+时隙;
}否则{
对于(int i=0;iexceptFrom&¤tTime>exceptTo){
添加(sdfTime.format(新日期(当前时间));
currentTime=currentTime+时隙;
}否则{
currentTime=currentTime+时隙;
}
}
}
}
返回时隙;
}
我得到了,但仍然没有得到欲望输出。你得到了什么输出?请更新您的问题。