求大神解答

L2506044793 2019-07-23 05:21:10
Java判断多个时间段是否重叠
时间格式

List<String> list = new ArrayList<String>();
list.add("08:00-09:00");
list.add("09:00-12:00");
list.add("13:00-16:30");
list.add("16:00-17:00");
list.add("18:00-20:00");

判断这个集合里面有没有重叠时间段
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2019-07-24
  • 打赏
  • 举报
回复
引用 楼主 L2506044793 的回复:
Java判断多个时间段是否重叠 时间格式

 List<String> list = new ArrayList<String>(); 
        list.add("08:00-09:00"); 
        list.add("09:00-12:00"); 
        list.add("13:00-16:30"); 
        list.add("16:00-17:00"); 
        list.add("18:00-20:00"); 
判断这个集合里面有没有重叠时间段

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class test4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<String> list=new ArrayList<String>();
		list.add("08:00-09:00");
		list.add("08:00-12:00");
		list.add("13:00-16:00");
		list.add("16:00-17:00");
		list.add("18:00-20:00");
		List<Timezone>  listtime=new ArrayList<Timezone>();
		SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");
		for(String i:list) {
			String[] s=i.split("-");
			try {
				Timezone tz=new Timezone(sdf.parse(s[0]),sdf.parse(s[1]));
				listtime.add(tz);
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		for(int i=0;i<listtime.size()-1;i++) {
			for(int j=i+1;j<listtime.size();j++) {
				comparetime(listtime.get(i), listtime.get(j));
			}
		}
	}
	static void comparetime(Timezone t1,Timezone t2) {
		if(t2.getStart().before(t1.getEnd())&&t2.getEnd().after(t1.getEnd())) {
			System.out.println(t1+"与"+t2+"有重叠!");
		}else if(t2.getStart().before(t1.getStart())&&t2.getEnd().after(t1.getStart())){
			System.out.println(t1+"与"+t2+"有重叠!");
		}
	}

}

class Timezone{
	private Date start,end;
	private SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");

	/**
	 * @param start
	 * @param end
	 */
	public Timezone(Date start, Date end) {
		super();
		this.start = start;
		this.end = end;
	}

	public Date getStart() {
		return start;
	}

	public void setStart(Date start) {
		this.start = start;
	}

	public Date getEnd() {
		return end;
	}

	public void setEnd(Date end) {
		this.end = end;
	}

	@Override
	public String toString() {
		return "时间段" + sdf.format(start) + "-" +sdf.format(end);
	}
	
}

运行结果:

时间段08:00-09:00与时间段08:00-12:00有重叠!
牧歌ing 2019-07-24
  • 打赏
  • 举报
回复
引用 2 楼 qq_39936465 的回复:
[quote=引用 楼主 L2506044793 的回复:]
Java判断多个时间段是否重叠
时间格式

List<String> list = new ArrayList<String>();
list.add("08:00-09:00");
list.add("09:00-12:00");
list.add("13:00-16:30");
list.add("16:00-17:00");
list.add("18:00-20:00");

判断这个集合里面有没有重叠时间段




import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class test4 {

public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list=new ArrayList<String>();
list.add("08:00-09:00");
list.add("08:00-12:00");
list.add("13:00-16:00");
list.add("16:00-17:00");
list.add("18:00-20:00");
List<Timezone> listtime=new ArrayList<Timezone>();
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");
for(String i:list) {
String[] s=i.split("-");
try {
Timezone tz=new Timezone(sdf.parse(s[0]),sdf.parse(s[1]));
listtime.add(tz);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int i=0;i<listtime.size()-1;i++) {
for(int j=i+1;j<listtime.size();j++) {
comparetime(listtime.get(i), listtime.get(j));
}
}
}
static void comparetime(Timezone t1,Timezone t2) {
if(t2.getStart().before(t1.getEnd())&&t2.getEnd().after(t1.getEnd())) {
System.out.println(t1+"与"+t2+"有重叠!");
}else if(t2.getStart().before(t1.getStart())&&t2.getEnd().after(t1.getStart())){
System.out.println(t1+"与"+t2+"有重叠!");
}
}

}

class Timezone{
private Date start,end;
private SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");

/**
* @param start
* @param end
*/
public Timezone(Date start, Date end) {
super();
this.start = start;
this.end = end;
}

public Date getStart() {
return start;
}

public void setStart(Date start) {
this.start = start;
}

public Date getEnd() {
return end;
}

public void setEnd(Date end) {
this.end = end;
}

@Override
public String toString() {
return "时间段" + sdf.format(start) + "-" +sdf.format(end);
}

}


运行结果:

时间段08:00-09:00与时间段08:00-12:00有重叠!

[/quote]

这个可以
L2506044793 2019-07-24
  • 打赏
  • 举报
回复
引用 2 楼 qq_39936465 的回复:
[quote=引用 楼主 L2506044793 的回复:]
Java判断多个时间段是否重叠
时间格式

List<String> list = new ArrayList<String>();
list.add("08:00-09:00");
list.add("09:00-12:00");
list.add("13:00-16:30");
list.add("16:00-17:00");
list.add("18:00-20:00");

判断这个集合里面有没有重叠时间段




import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class test4 {

public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list=new ArrayList<String>();
list.add("08:00-09:00");
list.add("08:00-12:00");
list.add("13:00-16:00");
list.add("16:00-17:00");
list.add("18:00-20:00");
List<Timezone> listtime=new ArrayList<Timezone>();
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");
for(String i:list) {
String[] s=i.split("-");
try {
Timezone tz=new Timezone(sdf.parse(s[0]),sdf.parse(s[1]));
listtime.add(tz);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int i=0;i<listtime.size()-1;i++) {
for(int j=i+1;j<listtime.size();j++) {
comparetime(listtime.get(i), listtime.get(j));
}
}
}
static void comparetime(Timezone t1,Timezone t2) {
if(t2.getStart().before(t1.getEnd())&&t2.getEnd().after(t1.getEnd())) {
System.out.println(t1+"与"+t2+"有重叠!");
}else if(t2.getStart().before(t1.getStart())&&t2.getEnd().after(t1.getStart())){
System.out.println(t1+"与"+t2+"有重叠!");
}
}

}

class Timezone{
private Date start,end;
private SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");

/**
* @param start
* @param end
*/
public Timezone(Date start, Date end) {
super();
this.start = start;
this.end = end;
}

public Date getStart() {
return start;
}

public void setStart(Date start) {
this.start = start;
}

public Date getEnd() {
return end;
}

public void setEnd(Date end) {
this.end = end;
}

@Override
public String toString() {
return "时间段" + sdf.format(start) + "-" +sdf.format(end);
}

}


运行结果:

时间段08:00-09:00与时间段08:00-12:00有重叠!

[/quote]

引用 2 楼 qq_39936465 的回复:
[quote=引用 楼主 L2506044793 的回复:]
Java判断多个时间段是否重叠
时间格式

List<String> list = new ArrayList<String>();
list.add("08:00-09:00");
list.add("09:00-12:00");
list.add("13:00-16:30");
list.add("16:00-17:00");
list.add("18:00-20:00");

判断这个集合里面有没有重叠时间段




import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class test4 {

public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list=new ArrayList<String>();
list.add("08:00-09:00");
list.add("08:00-12:00");
list.add("13:00-16:00");
list.add("16:00-17:00");
list.add("18:00-20:00");
List<Timezone> listtime=new ArrayList<Timezone>();
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");
for(String i:list) {
String[] s=i.split("-");
try {
Timezone tz=new Timezone(sdf.parse(s[0]),sdf.parse(s[1]));
listtime.add(tz);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int i=0;i<listtime.size()-1;i++) {
for(int j=i+1;j<listtime.size();j++) {
comparetime(listtime.get(i), listtime.get(j));
}
}
}
static void comparetime(Timezone t1,Timezone t2) {
if(t2.getStart().before(t1.getEnd())&&t2.getEnd().after(t1.getEnd())) {
System.out.println(t1+"与"+t2+"有重叠!");
}else if(t2.getStart().before(t1.getStart())&&t2.getEnd().after(t1.getStart())){
System.out.println(t1+"与"+t2+"有重叠!");
}
}

}

class Timezone{
private Date start,end;
private SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");

/**
* @param start
* @param end
*/
public Timezone(Date start, Date end) {
super();
this.start = start;
this.end = end;
}

public Date getStart() {
return start;
}

public void setStart(Date start) {
this.start = start;
}

public Date getEnd() {
return end;
}

public void setEnd(Date end) {
this.end = end;
}

@Override
public String toString() {
return "时间段" + sdf.format(start) + "-" +sdf.format(end);
}

}


运行结果:

时间段08:00-09:00与时间段08:00-12:00有重叠!

[/quote]问题已经解决,十分感谢
十八道胡同 2019-07-23
  • 打赏
  • 举报
回复
初步的想法,每个值都分成2个DateTime类型,然后双层循环判断 是否重叠

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧