为了让周一至周六当月 [英] To get the mondays to saturdays in the current month

查看:133
本文介绍了为了让周一至周六当月的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在一个月我想知道星期一至sataurdays当月例如:10月月2011有

  3  - 辛2011年10月8日 -  2011年,
10-OCT-11至10月15日11日
10月17日,11日至10月22日 -  2011年,
24月 -  2011年29月 -  2011
 

天所有这些序列所有的这些天像3-OCT-2011,4-OCT-2011 .... 29-OCT-11等需要得到数组格式或数据表。

解决方案

 今天VAR = DateTime.Today;
VAR daysInMonth = DateTime.DaysInMonth(today.Year,today.Month);

VAR日期= Enumerable.Range(1,daysInMonth)
                            。选择(N =>新建日期时间(today.Year,today.Month,N))
                            。凡(日期=>!date.DayOfWeek = DayOfWeek.Sunday)
                            .ToArray();
 

这将着眼于天在当月的数量,创建日期对象的每个,然后只返回这些日期而不是星期天作为数组。

 今天VAR = DateTime.Today;
VAR daysInMonth = DateTime.DaysInMonth(today.Year,today.Month);

VAR日期= Enumerable.Range(1,daysInMonth)
                            。选择(N =>新建日期时间(today.Year,today.Month,N))
                            。凡(日期=>!date.DayOfWeek = DayOfWeek.Sunday)
                            .SkipWhile(日期=>!date.DayOfWeek = DayOfWeek.Monday)
                            .TakeWhile(日期=> date.DayOfWeek = DayOfWeek.Monday ||(date.DayOfWeek == DayOfWeek.Monday和放大器;&安培;!daysInMonth  -  date.Day大于7))
                            .ToArray();
 

这将这样做,除了摆脱任何周一 - >周六范围不属于当月。 (周开始于previous月或结束于下一个)。

编辑:

下面是一个.NET 2解决方案,它会做同样的事情,我的previously发布LINQ的解决方案。

 今天的日期时间= DateTime.Today;
        INT daysInMonth = DateTime.DaysInMonth(today.Year,today.Month);

        名单< D​​ateTime的>日期=新的名单,其中,日期时间>();

        布尔foundFirst = FALSE;

        对于(INT N = 1; N< = daysInMonth; N ++)
        {
            VAR日期=新的日期时间(today.Year,today.Month,N);

            //跳过,直到我们发现这个月的第一个星期一。
            如果(date.DayOfWeek = DayOfWeek.Monday和放大器;!&安培;!foundFirst)
                继续;

            foundFirst = TRUE;

            //将所有天(周日除外)。
            如果(date.DayOfWeek!= DayOfWeek.Sunday)
                dates.Add(日期);

            INT remainingDays = daysInMonth  -  N;

            //验证,有留在本月底添加所有天高达下星期六足够天。
            如果(date.DayOfWeek == DayOfWeek.Saturday&安培;&安培; remainingDays 7;)
                打破;
        }

        DateTime的[] dateArray = dates.ToArray();
 

In a month i want to know mondays to sataurdays for the current month eg: in oct month 2011 there are

3-oct-2011 to 8-oct-2011,
10-OCt-11 to 15-Oct-11, 
17-Oct-11 to 22-oct-2011,
24-Oct-2011 to 29-Oct-2011 

all these sequence of days All these days like 3-oct-2011,4-oct-2011 ....29-oct-11 etc need to get in the array format or in the datatable.

解决方案

var today = DateTime.Today;
var daysInMonth = DateTime.DaysInMonth(today.Year, today.Month);

var dates = Enumerable.Range(1, daysInMonth)
                            .Select(n => new DateTime(today.Year, today.Month, n))
                            .Where(date => date.DayOfWeek != DayOfWeek.Sunday)
                            .ToArray();

This will look at the number of days in the current month, create a DateTime object for each, then only return those dates which are not a Sunday as an array.

var today = DateTime.Today;
var daysInMonth = DateTime.DaysInMonth(today.Year, today.Month);

var dates = Enumerable.Range(1, daysInMonth)
                            .Select(n => new DateTime(today.Year, today.Month, n))
                            .Where(date => date.DayOfWeek != DayOfWeek.Sunday)
                            .SkipWhile(date => date.DayOfWeek != DayOfWeek.Monday)
                            .TakeWhile(date => date.DayOfWeek != DayOfWeek.Monday || (date.DayOfWeek == DayOfWeek.Monday && daysInMonth - date.Day > 7))
                            .ToArray();

This will do the same, except get rid of any Monday -> Saturday ranges which are not in the current month. (Week started in the previous month, or ends in the next).

Edit:

Here is a .NET 2 solution which will do the same thing as my previously posted LINQ solution.

        DateTime today = DateTime.Today;
        int daysInMonth = DateTime.DaysInMonth(today.Year, today.Month);

        List<DateTime> dates = new List<DateTime>();

        bool foundFirst = false;

        for (int n = 1; n <= daysInMonth; n++)
        {
            var date = new DateTime(today.Year, today.Month, n);

            // Skip untill we find the first Monday of the month.
            if (date.DayOfWeek != DayOfWeek.Monday && !foundFirst)
                continue;

            foundFirst = true;

            // Add all days except Sundays. 
            if (date.DayOfWeek != DayOfWeek.Sunday)
                dates.Add(date);

            int remainingDays = daysInMonth - n;

            // Verify that there are enough days left in this month to add all days upto the next Saturday.
            if (date.DayOfWeek == DayOfWeek.Saturday && remainingDays < 7)
                break;
        }

        DateTime[] dateArray = dates.ToArray();

这篇关于为了让周一至周六当月的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆