如何判断日期交叉已知,两个日期段,如2008-1-1至2008-1-10这是一个日期段,
另一个日期段为2008-1-5至2008-1-15
如何得出重复日期为2008-1-5至2008-1-10
多出来的部分为2008-1-10至2008-1-15
被删除的部分为2008-1-1至2008-1-5如何设计这样的函数?
另一个日期段为2008-1-5至2008-1-15
如何得出重复日期为2008-1-5至2008-1-10
多出来的部分为2008-1-10至2008-1-15
被删除的部分为2008-1-1至2008-1-5如何设计这样的函数?
解决方案 »
- 求解:Hashtable<K,V>、ConcurrentHashMap<K,V>和ConcurrentSkipList<K,V>三者的区别!!!
- 匹配单一字符重复出现的正则表达式是什么??
- 怎么将Resultset里的内容在窗口表格中显示出来?
- 如何在文本框内输入一个字符,就可以对其判断是哪个字符?
- =======怎么把一个String变成一个int []数组????
- facon server是?
- 如何修改一个大文件中的一段内容
- 关于 import 问题求教!
- servlet和applet实现的参数传递问题?求高手帮忙!
- 取本机IP
- 服务经常被关掉,有没有办法通过程序自动启动呢
- 不懂这段代码为什么这么写,帮解释解释
楼主【kkun_3yue3】截止到2008-08-01 14:44:27的历史汇总数据(不包括此帖):
发帖的总数量:224 发帖的总分数:6462 每贴平均分数:28
回帖的总数量:2286 得分贴总数量:1061 回帖的得分率:46%
结贴的总数量:224 结贴的总分数:6462
无满意结贴数:14 无满意结贴分:82
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:6.25 % 无满意结分率:1.27 %
敬礼!
取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=kkun_3yue3
两个字段保存,BeginDate,EndDate
希望能看到代码,,,,新手上路
Date [] time_2 = new Date[2];
time_1[0] = new Date(java.sql.Timestamp.valueOf("2008-01-01 00:00:00").getTime());
time_1[1] = new Date(java.sql.Timestamp.valueOf("2008-01-10 00:00:00").getTime());
time_2[0] = new Date(java.sql.Timestamp.valueOf("2008-01-05 00:00:00").getTime());
time_2[1] = new Date(java.sql.Timestamp.valueOf("2008-01-15 00:00:00").getTime());
int overstep = time_2[1].getDate()-time_1[1].getDate();
int discarded = time_2[0].getDate()-time_1[0].getDate();
int iterant = time_1[1].getDate()-time_2[0].getDate();
enddate1 enddate2明白吧?HashMap decodes(String b1,String e1,String b2,String e2)
{
if(b1>e2||b2>e1) //没有交集
{
if(b1>e2)
{
//你准备怎么办?
}
else
{
//你准备怎么办?
}
}
else
{
if(b1<=e2)
{
if(b1>=b2)
{
if(e1<=e2)
{
//交集是b1-e1
}
else
{
//交集是b1-e2
}
}
else
{
if(e1<=e2)
{
//交集是b2-e1
}
else
{
//交集是b2-e2
}
}
}
if(b2<=e1)
{
if(b2>=b1)
{
if(e1<=e2)
{
//交集是b2-e1
}
else
{
//交集是b2-e2
}
}
else
{
if(e1<=e2)
{
//交集是b1-e1
}
else
{
//交集是b1-e2
}
}
}
}
}
时间段B: start:2008-1-5 and :2008-1-15
分析:A与B只可能出现三种情况:1、相交;2、相离;3、包含;
写一方法判断出A与B的关系。
如果是相交则相交的时间为:小时间的end->大时间的start
如果是包含则为:小时间的start->小时间的end
如果是相离则没有时间交叉。问题分析至此可以得知问题的关键在于如何判断这两个时间段的关系。一会我试试看能否做出来,如果做出来把代码贴进进来。我也是新手,呵呵
public String decodeNumber(int start1,int end1,int start2,int end2){
//相离
if(start1>end2||start2>end1){
return "相离";
}else if(start1<=start2&&end1>=end2){
return "包含,相交的部分为:"+bh(start1, end1, start2, end2);
}else{
return "两个数相交,相交的部分为:"+sj(start1, end1, start2, end2);
}
}
//相交
public static String sj(int start1,int end1,int start2,int end2){
String str=null;
if(end1>start2){
str=start2+"到"+end1;
}else{
str=start1+"到"+end2;
}
return str;
}
//包含
public static String bh(int start1,int end1,int start2,int end2){
String str=null;
if(start1<=start2){
str=start1+"到"+end1;
}else{
str=start2+"到"+end2;
}
return str;
}
public static void main(String [] agrs){
TestNumber tn=new TestNumber();
String s=tn.decodeNumber(1, 6, 4, 10);
System.out.println(s);
}
}这是两个数的判断,如果是两个日期还是先把日期转成数字吧。好像日期是可以比较大小的,只是我暂时忘了,不好意思。留给其它人的解决吧。
public class TestNumber {
//判断两组数的关系
public String decodeNumber(int start1,int end1,int start2,int end2){
if(start1>end2||start2>end1){
return "相离";
}else if(start1<=start2&&end1>=end2){
return "包含,相交的部分为:"+bh(start1, end1, start2, end2);
}else{
return "两个数相交,相交的部分为:"+sj(start1, end1, start2, end2);
}
}
//相交
public static String sj(int start1,int end1,int start2,int end2){
String str=null;
if(start1<=start2){
str=start2+"到"+end1;
}else{
str=start1+"到"+end2;
}
return str;
}
//包含
public static String bh(int start1,int end1,int start2,int end2){
String str=null;
if(start1<=start2){
str=start2+"到"+end2;
}else{
str=start1+"到"+end1;
}
return str;
}
public static void main(String [] agrs){
TestNumber tn=new TestNumber();
//相交
String s=tn.decodeNumber(3, 10,1, 6);
//相离
String s2=tn.decodeNumber(1, 5, 15, 110);
//包含
String s3=tn.decodeNumber(1, 15, 10, 13);
System.out.println(s);
System.out.println(s2);
System.out.println(s3);
}
}