有沒有一種方法,使每一天的foreach循環在特定月份?
的東西思維像
foreach (DateTime date in DateTime.DaysInMonth(2012, 1))
{
}
有沒有一種方法,使每一天的foreach循環在特定月份?
的東西思維像
foreach (DateTime date in DateTime.DaysInMonth(2012, 1))
{
}
你可以寫很容易地一個輔助方法:
public static IEnumerable<DateTime> AllDatesInMonth(int year, int month)
{
int days = DateTime.DaysInMonth(year, month);
for (int day = 1; day <= days; day++)
{
yield return new DateTime(year, month, day);
}
}
然後調用它:
foreach (DateTime date in AllDatesInMonth(2012, 1))
這可能是som的矯枉過正ething你只是做一次,但它是比使用for
環或類似的東西,如果你這樣做了很多更好。它使你的代碼說只是你想要什麼來實現的,而不是力學你怎麼做。
嘗試使用一個for循環來代替。
for (int i = 1; i <= DateTime.DaysInMonth(year, month); i++)
{
DateTime dt = new DateTime(year, month, i);
}
你可以用一個簡單的循環做到這一點:
DateTime first = new DateTime(2012, 1, 1);
for (DateTime current = first ; current.Month == first.Month ; current = current.AddDays(1)) {
}
我喜歡利用經常被忽視的能力,用來與比INT其它數據類型的循環筆記。 – 2012-03-07 21:51:44
您可以使用範圍:
Enumerable
.Range(1, DateTime.DayInMonth(2012, 1)
.Select(i => new DateTime(2012, 1, i)))
.ToList() // ForEach is not a Linq to Sql method (thanks @Markus Jarderot)
.ForEach(day => Console.Write(day));
這是相當容易產生天的枚舉。這裏有一種方法可以做到這一點
Enumerable.Range(1, DateTime.DaysInMonth(year, month)).Select(day =>
new DateTime(year, month, day))
你需要與每一天?你每天需要一個完整的日期還是數值? – sll 2012-02-01 14:04:18
實際上,如果DateTime在請求的日期範圍內確實返回IEnumerable,我認爲它會很棒。 –
adelphus
2012-02-01 14:08:22
@sll我正在做一個日曆,全年可見,在那裏人們將能夠使單獨的約會 – 2012-02-01 16:30:01