2012-03-01 34 views
-4

我希望在不使用內置的DayOfYear函數的情況下獲取當前的一年中的日期(02年2月爲33等)。 當天即將更改爲DateTime選擇器。 任何反應非常感謝。沒有DayOfYear功能的一年中的哪一天?

+0

爲什麼?好奇... – Asken 2012-03-01 18:22:08

+3

爲什麼你不想使用'DateTime.Now.DayOfYear'? – 2012-03-01 18:22:17

+3

當您不想使用內置功能時,如果您可以提供* why why *的詳細信息,它會有所幫助。如果它是功課,那好吧,這樣說。如果在你的環境中有一些特定的限制,*詳細說明* - 如果內置功能不起作用,如果人們盲目操作,你如何知道建議的答案? – 2012-03-01 18:30:14

回答

3

那麼你可以用「月初」值(1,32,60,90,121等)的硬編碼數組自己計算它,如果你在閏年而且月份是3月或以後...但爲什麼不只是使用內置的屬性?

另外,Noda Time不使用DateTime.DayOfYear :)

// Ideally, use an injected IClock for testability... 
var now = SystemClock.SystemNow.InZone(DateTimeZone.SystemDefault); 
var dayOfYear = now.DayOfYear; 

(注意,這裏使用了系統時區,如果你服頁面,用戶在其中可能不適合不同的時區仔細想想)

4

因爲我拒絕相信不使用DateTime.Now.DayOfYear有一個很好的理由,並且對於那些在尋找合適的方法來計算每年的日期時可能會遇到這個問題的人,我的回答是:

int dayOfYear = DateTime.Now.DayOfYear; 
0

你可以只計算它自己:

protected int GetJulianDate(System.DateTime dDate) 
{ 
    // CREATE THE JULIAN DATE FROM THE PROVIDED DATE 
    // dDate - THE DATE TO BE CONVERTED 
    DateTime firstDay = DateTime.Parse("01/01/" + dDate.Year); 
    TimeSpan ts = dDate.Subtract(firstDay); 
    return ts.Days + 1; 
}