2011-05-05 14 views
20

就像它說的那樣,我只需要在C#中的兩個日期之間計算星期(即7天跨度,而不是日曆周)的最有效方式。最有效的方法來計算兩個日期時間之間的星期數

+0

你的意思是像Calender那樣的幾周? – V4Vendetta 2011-05-05 06:11:56

+0

還有什麼其他類型的周?有多少人與C#或日期有關? – McAzzaMan 2011-05-05 06:29:32

+2

我的意思是兩種方法,即任何7天的時間可以是一週,而另一種情況下它跟隨在特定日期範圍內有幾周的日曆。由於你在處理日期,所以與日曆周的檢查更相關。 – V4Vendetta 2011-05-05 06:37:10

回答

38

獲取天鴻溝的數量由7

int weeks = (date1 - date2).TotalDays/7; 

你可能有一個長達6天,將不包括在週數剩餘部分。

+1

謝謝。你不會相信這個網上有多少垃圾回答,而且我有一個大腦放屁的一天,不能提出任何事情。 – McAzzaMan 2011-05-05 06:12:31

+1

當您想知道周測量的其他「類型」時,此答案不起作用 - 因此需要日曆周,而不是任意的跨度。例如,假設你有一個頻率標準,即「每個日曆周」一次。如果它是在星期六完成的,那麼在星期天你就想看到「1」的結果,因爲現在這是一個新的日曆周。爲了得到一個零,你必須在同一個日曆週中比較兩個日期。這個答案會給出「0」,並繼續給零直到下個星期六。請參閱OP評論中的'V4Vendetta'評論。 – DAG 2014-11-24 14:22:32

+1

@DAG - 你看過這個問題嗎?這不是它要求的。 – Oded 2014-11-24 14:28:28

5

我假設你想在Calender的基礎上得到這個。爲此,您需要根據您的需要System.Globalization

DateTime date1 = DateTime.Now; 
DateTimeFormatInfo dinfo = DateTimeFormatInfo.CurrentInfo; 
dinfo.Calendar.GetWeekOfYear(date1, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday) 

你必須設置日曆周規則和一週的第一天。

這給你一個日曆的日曆編號。你可以得到相同的你的其他日期,不同的是你的周計數

希望這可以幫助你。

+0

這在跨越不同年份的兩個日期的非常常見的情況下失敗。不是所有的年份都是52周,所以你的答案沒有立即明顯的修復。 – DAG 2014-11-24 14:25:34

3

嘗試使用此方法獲得的天數:

TimeSpan ts = date1.Subtract(date2); 
int dateDiff = ts.Days(); 

然後,像@Oded說,除以7

int totalWeeks = (int) dateDiff/7; 

乾杯!

相關問題