【问题标题】:How do i get all the weekdays and dates in a month我如何获得一个月内的所有工作日和日期
【发布时间】:2012-10-05 21:38:09
【问题描述】:

我正在尝试获取所选月份的所有工作日以及星期一或星期二等日期?这怎么可能?有没有我不知道的内置函数?

这是在 C# 2.0 中,使用 VS 2005 的 asp.net

【问题讨论】:

  • 您希望列表类型是什么,一系列 DateTime 对象?
  • 日期和日期如“15th and Monday”我想要两个值。
  • 对不起,我不明白你的问题。你能更具体一点吗? :)
  • 我编辑了我的问题@PicrofoEGY

标签: c# asp.net datetime


【解决方案1】:

我不保证闰年、夏令时跳跃、特殊日子、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 属性,您可以检查它是否是周一到周五。

【讨论】:

  • 我没有测试过,但是根据MSDN,我使用的成员在2.0中有。
  • @Ram 否,但您可以显式声明类型。我会更新答案。
  • 非常感谢。这是完美的,我今天学到了一些东西。再次感谢!
【解决方案2】:

这应该可行

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 中获取您需要的任何信息。

【讨论】:

  • 那个工作日检查不会那样工作。我怀疑你想要:if ((basedt.DayOfWeek &amp; (DayOfWeek.Monday | DayOfWeek.Tuesday | DayOfWeek.Wednesday | DayOfWeek.Thursday | DayOfWeek.Friday)) != 0) 或类似的东西。编辑:我认为年份检查是多余的(我想不出年份会改变但月份不会改变的条件)
  • 我可能有星期几的语法错误,我不经常写这样的子句,我在年检上也想过同样的事情,但想通了为什么不这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
  • 2015-11-29
相关资源
最近更新 更多