2011-12-06 103 views
0

我正在將數據保存到具有指定字節倍數(dataSlots)的循環日誌中,並且我正在計算基於從參考日期傳遞的日期的星期數。一年有52.17周。如何計算C#中的當前週數?

DateTime startDate = DateTime.UtcNow; 
for (int ii = 0; ii < 900; ii++) 
{ 
    currentDate = startDate + new TimeSpan(7 * ii, 1, 1, 1, 1) 
    DateTime globalStartReference = new DateTime(2011, 12, 1, 0, 0, 0, DateTimeKind.Utc); 
    var span = currentDate - globalStartReference ; 
    int dataSlot = 0; 
    dataSlot = (span.Days * 7)/52; 
    Console.WriteLine(dataSlot); 
} 

我希望dataSlot將基於當前的一週越來越多,但事實並非如此。我得到重複的條目(並因此覆蓋我的數據),這些周

11 
28 
44 
60 
77 
88 
109 

爲什麼會出現重複的星期,我怎麼解釋呢?我的猜測是,一年中有幾個星期...

回答

1

你是否想要得到當前任何一年的一週?它看起來像從一些預先定義的開始日期到無限期。使用適當的日曆及其方法,您可以根據特定的日期獲得一年中的給定周,但不是任意日期的x周。

另外,您還需要考慮閏年,部分周等

+0

有什麼方法可以確定一年的哪一週?我在DateTime下看不到它們。我需要從一個給定的開始日期(固定的,系統定義或沒有)到所有用戶提供的結束日期的總和。 – LamonteCristo

+0

那麼,它可能會涉及日曆類...但你也檢查出http://stackoverflow.com/questions/1083955/how-to-get-difference-between-two-dates-in-year-month - 週日 –

0

如果你只是擔心從基線開始的幾周,那麼多年不會進入它 - 這只是7天的增量。

否則你有年份和週年; @ BACON的答案可能適用於此。您會得到一些重疊 - Y2W1可能與Y1W52共享相同的日曆周。不知道如果你只是添加並使第53周,但這會變得有問題,你走的時間越長。