如何解析我的日期范围,然后检查碰撞?

时间:2011-08-20 01:47:16

标签: java date

我必须创建一个预订系统类型程序,用户输入一个用户名(字符串),然后输入他们想要预订的月份,日期和时间,然后输入结束月份,日期和时间。所以它看起来类似于:

John Jul 23 9 Jul 24 18

user startMonth startDate startTime endMonth endDate endTime

我需要能够实现这一点,以便我可以检查是否有任何预订发生冲突,有人可以告诉我如何执行此操作,因为我是Java新手。

编辑:我知道如何解析输入,但我不太清楚如何在java中使用日期函数,以及如何帮助我检查是否有任何预订发生冲突。

5 个答案:

答案 0 :(得分:2)

在Java中,解析和格式化Date对象由DateFormat类型的对象处理,通常为SimpleDateFormat

查看SimpleDateFormat文档并尝试设想如何使用Date对象查看是否存在任何冲突。

答案 1 :(得分:2)

回答问题...... ( start1 <= end2 and start2 <= end1 )

java.util.Date包含long值。使用getTime()获取该值,以进行比较。

请参阅http://c2.com/cgi/wiki?TestIfDateRangesOverlap

答案 2 :(得分:0)

尝试使用Calendar对象。

答案 3 :(得分:0)

您需要解析输入,您可以使用String.split方法来完成 或者更复杂的方法,我认为更好,是使用java正则表达式。

解析后,你可以形成一个包含日期的字符串,然后用java日期解析器解析它。

答案 4 :(得分:0)

正如maerics已写的:SimpleDateFormat是你的朋友......

将您的输入分为3个部分,如SJuan76建议,并将两个日期部分都提供给SimpleDateFormat的解析方法......这样您就可以获得两个日期部分的Date对象...

现在预订部分和碰撞检查...

我建议您为预订或预订创建自己的课程,或者您想要打电话。

您可以使用LinkedList来存储对象......

当你将一个对象添加到列表中时,保持列表按开始日期排序...这样你就可以看到插入的对象是否会与另一个对象发生碰撞...找到插入新对象的位置..看看前一个...如果新对象的开始日期在前任结束日期之前我们有碰撞......如果新结束日期在后继者开始日期之后,我们就会发生碰撞......如果有的话没有碰撞,将新对象插入列表中的这个位置...