2012-10-15 25 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

相关问题