Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 把时间分成相等的间隔_Java_Android - Fatal编程技术网

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+时隙;
}
}
}
}
返回时隙;
}

我得到了,但仍然没有得到欲望输出。你得到了什么输出?请更新您的问题。