2011-03-07 144 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)

注意:這包括邊緣完全重疊的情況。如果你想排除,改變> =運營​​商>,並< =到<


所以,在重疊值的基礎上,我可以決定我應該有多少列添加。