我不知道我的邏輯是否正確,但我試圖從頭開始實現日曆日視圖。並且爲了在同一時間實現同一空間的共享,對我來說它有點棘手。日曆日視圖邏輯
我有時間的列表:
A.凌晨1點 - 凌晨2點
B.凌晨1點 - 凌晨2:30
C.上午01時30 - 上午03點
所以基本上AC都有一個共同的凌晨2點的時間,所以他們需要分享在同一個空間。那麼怎麼能做到這一點呢?
我不知道我的邏輯是否正確,但我試圖從頭開始實現日曆日視圖。並且爲了在同一時間實現同一空間的共享,對我來說它有點棘手。日曆日視圖邏輯
我有時間的列表:
A.凌晨1點 - 凌晨2點
B.凌晨1點 - 凌晨2:30
C.上午01時30 - 上午03點
所以基本上AC都有一個共同的凌晨2點的時間,所以他們需要分享在同一個空間。那麼怎麼能做到這一點呢?
這並不難。你應該計算重疊的任務,分配給列並繪製它。在你的例子中,我們有3個重疊的任務。這意味着你必須爲代表每個任務的框創建3列。
A.凌晨1點 - 凌晨2點
B.凌晨1點 - 凌晨2:30
C.上午4時半 - 凌晨3點
這個例子創建2列,因爲我們只有2個重疊的任務。
現在,當循環計數重疊的任務時,您可以將每個任務分配給指定的列。當需要新列時 - 創建它。
下一個循環僅在分配的列中繪製此框。正如你所看到的,我們必須循環:一個用於計數重疊和分配列,另一個用於繪圖。
繼承人什麼,我已經得到了搜索TRU淨
要檢查重疊:
讓康達平均日期範圍完全後DATERANGE B(真,如果啓動市場> EndB) 讓CondB平均日期範圍完全之前(如果恩達< STARTB真)
然後重疊存在DATERANGE乙如果A和B都不是真的(如果一個範圍是其他後既不是完全,也不是完全在另一個之前,那麼他們必須重疊)
現在德摩根定律,我認爲這是說,
不是(A或B)< =>不是一個與非B
這意味着(啓動市場< = EndB)和(恩達> = STARTB)
注意:這包括邊緣完全重疊的情況。如果你想排除,改變> =運營商>,並< =到<
所以,在重疊值的基礎上,我可以決定我應該有多少列添加。
因此,我應該比較什麼能夠檢查時間是否重疊? – 2011-03-07 08:13:30
日期和時間就足夠了:) – dariol 2011-03-07 10:01:16