2011-03-07 159 views
0

我不知道我的逻辑是否正确,但我试图从头开始实现日历日视图。并且为了在同一时间实现同一空间的共享,对我来说它有点棘手。日历日视图逻辑

我有时间的列表:

A.凌晨1点 - 凌晨2点

B.凌晨1点 - 凌晨2:30

C.上午01时30 - 上午03点

所以基本上AC都有一个共同的凌晨2点的时间,所以他们需要分享在同一个空间。那么怎么能做到这一点呢?

回答

0

这并不难。你应该计算重叠的任务,分配给列并绘制它。在你的例子中,我们有3个重叠的任务。这意味着你必须为代表每个任务的框创建3列。

A.凌晨1点 - 凌晨2点
B.凌晨1点 - 凌晨2:30
C.上午4时半 - 凌晨3点

这个例子创建2列,因为我们只有2个重叠的任务。

现在,当循环计数重叠的任务时,您可以将每个任务分配给指定的列。当需要新列时 - 创建它。

下一个循环仅在分配的列中绘制此框。正如你所看到的,我们必须循环:一个用于计数重叠和分配列,另一个用于绘图。

+0

因此,我应该比较什么能够检查时间是否重叠? – 2011-03-07 08:13:30

+0

日期和时间就足够了:) – dariol 2011-03-07 10:01:16

0

继承人什么,我已经得到了搜索TRU净

要检查重叠:

让康达平均日期范围完全后DATERANGE B(真,如果启动市场> EndB) 让CondB平均日期范围完全之前(如果恩达< STARTB真)

然后重叠存在DATERANGE乙如果A和B都不是真的(如果一个范围是其他后既不是完全,也不是完全在另一个之前,那么他们必须重叠)

现在德摩根定律,我认为这是说,

不是(A或B)< =>不是一个与非B

这意味着(启动市场< = EndB)和(恩达> = STARTB)

注意:这包括边缘完全重叠的情况。如果你想排除,改变> =运营​​商>,并< =到<


所以,在重叠值的基础上,我可以决定我应该有多少列添加。