2013-06-26 29 views
0

recently asked this question,採取datetime對象的列表,並解析出:在C#中,從日期集合中解析出每兩週一組的日期?

  1. 週刊復發:匹配相同的一週中的某天該日期集合,小時,分鐘,得到一組列表,其中每個項目列表中匹配的關鍵,其中:

    主要是星期幾+小時+分鐘的串聯

  2. 每月復發:配合SA是日期收藏我weekOfMonth,星期,時,分,以得到一組列表,其中列表中的每個項目匹配重點其中:

    主要是WeekOfMonth + DAYOFWEEK +小時+分鐘

這兩個的級聯工作很好。

我現在有一個額外的要求,我正在努力支持每週復發(每隔一週)。我試圖找出正確的密鑰匹配,因爲上面的其他用例都有邏輯計算密鑰,但不能計算每隔一週的算法/密鑰

回答

4

您需要弄清楚有關日期的星期編號。

例如:

var dt = new DateTime(...); // your datetime 
var cal = new System.Globalization.GregorianCalendar(); 
var weekNum = cal.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Sunday); 

有用於計算年的幾個星期,你有一個CalendarWeekRule指定和一週開始的第一天對應的DayOfWeek不同的策略。你可以閱讀更多here

一旦你有一個星期數,你可以做一些數學,使其「雙週」:

int biweeklyKey = weekNum % 2; 

值將是0或1,你可以在一個關鍵使用算法。