为了让周一至周六当月 [英] To get the mondays to saturdays in the current month
问题描述
在一个月我想知道星期一至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);
名单< DateTime的>日期=新的名单,其中,日期时间>();
布尔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屋!