2012-10-15 54 views
0

我想獲得選定5月的工作日與像週一或週二,等這一天一起?這怎麼可能?有沒有內置的功能,我不知道?我如何得到所有的工作日和日期在一個月

這是在C#2.0,asp.net使用VS 2005

+0

你想要列表類型是什麼,一系列的DateTime對象? – Wanabrutbeer

+0

像「15日和星期一」這樣的日期和日期我想要這兩個值。 – Ram

+0

對不起,我不明白你的問題。你可以請更具體嗎? :) –

回答

4

我並沒有對閏年的保證,夏令跳躍,特殊的日子,Shanghai 1927

public List<DateTime> getWeekdatesandDates(int Month, int Year) 
{ 
    List<DateTime> weekdays = new List<DateTime>(); 

    DateTime firstOfMonth = new DateTime(Year, Month, 1); 

    DateTime currentDay = firstOfMonth; 
    while (firstOfMonth.Month == currentDay.Month) 
    { 
     DayOfWeek dayOfWeek = currentDay.DayOfWeek; 
     if (dayOfWeek != DayOfWeek.Saturday && dayOfWeek != DayOfWeek.Sunday) 
      weekdays.Add(currentDay); 

     currentDay = currentDay.AddDays(1); 
    } 

    return weekdays; 
} 

所得DateTime對象有一個DayOfWeek屬性,你可以檢查它是否是星期一到星期五。

+0

這是否正常工作在C#2.0?謝謝您的幫助! – Ram

+0

我還沒有測試過,但根據MSDN,我使用的成員在2.0中。 –

+0

Var無法在2.0中使用,對不對? – Ram

1

這應該工作

private List<DateTime> getWeekDayDates(int month, int year) 
{ 
    List<DateTime> weekdays = new List<DateTime>(); 
    DateTime basedt = new DateTime(year, month, 1); 
    while ((basedt.Month == month) && (basedt.Year == year)) 
    { 
     if (basedt.DayOfWeek == (DayOfWeek.Monday | DayOfWeek.Tuesday | DayOfWeek.Wednesday | DayOfWeek.Thursday | DayOfWeek.Friday)) 
     { 
      weekdays.Add(new DateTime(basedt.Year, basedt.Month, basedt.Day)); 
     } 
     basedt = basedt.AddDays(1); 
    } 
    return weekdays; 
} 

然後你就可以擺脫每次需要的DateTime的任何信息。

+0

那個週日檢查不會那樣工作。我懷疑你想要的:(!(basedt.DayOfWeek及(DayOfWeek.Monday | DayOfWeek.Tuesday | DayOfWeek.Wednesday | DayOfWeek.Thursday | DayOfWeek.Friday))= 0)''如果還是有些等同。編輯:還有一年檢查,我認爲是多餘的(我能想到的任何條件,使年會改變,但不是月) –

+1

我可能有星期幾的語法錯誤,我不經常寫這樣的條款,我想的同樣的事情在年檢查,但想到爲什麼不。 – Wanabrutbeer

相關問題