用循环计算两个日期之间有多少工作日,link怎么实现?用takewhile怎么代替while?
不考虑过节和轮休,写一个给你
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var dt1 = new DateTime(2014, 12, 1);
var dt2 = DateTime.Now;
var query = EnumDate(dt1).TakeWhile(x => x < dt2).Where(x => x.DayOfWeek != DayOfWeek.Sunday && x.DayOfWeek != DayOfWeek.Saturday);
foreach (var item in query)
Console.WriteLine(item);
}
static IEnumerable<DateTime> EnumDate(DateTime dt)
{
while (true)
{
yield return dt;
dt = dt.AddDays(1);
}
}
}
}
2014/12/1 0:00:00
2014/12/2 0:00:00
2014/12/3 0:00:00
2014/12/4 0:00:00
2014/12/5 0:00:00
2014/12/8 0:00:00
2014/12/9 0:00:00
2014/12/10 0:00:00
2014/12/11 0:00:00
2014/12/12 0:00:00
2014/12/15 0:00:00
2014/12/16 0:00:00
2014/12/17 0:00:00
2014/12/18 0:00:00
2014/12/19 0:00:00
2014/12/22 0:00:00
2014/12/23 0:00:00
2014/12/24 0:00:00
2014/12/25 0:00:00
2014/12/26 0:00:00
2014/12/29 0:00:00
2014/12/30 0:00:00
2014/12/31 0:00:00
2015/1/1 0:00:00
2015/1/2 0:00:00
请按任意键继续. . .
其实还是要循环的,只是包装在了EnumDate里面
2014/12/1 0:00:00
2014/12/2 0:00:00
2014/12/3 0:00:00
2014/12/4 0:00:00
2014/12/5 0:00:00
2014/12/8 0:00:00
2014/12/9 0:00:00
2014/12/10 0:00:00
2014/12/11 0:00:00
2014/12/12 0:00:00
2014/12/15 0:00:00
2014/12/16 0:00:00
2014/12/17 0:00:00
2014/12/18 0:00:00
2014/12/19 0:00:00
2014/12/22 0:00:00
2014/12/23 0:00:00
2014/12/24 0:00:00
2014/12/25 0:00:00
2014/12/26 0:00:00
2014/12/29 0:00:00
2014/12/30 0:00:00
2014/12/31 0:00:00
2015/1/1 0:00:00
2015/1/2 0:00:00
请按任意键继续. . .
或者这样写
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var dt1 = new DateTime(2014, 12, 1);
var dt2 = DateTime.Now;
var query = Enumerable.Range(0, (int)new TimeSpan(dt2.Ticks - dt1.Ticks).TotalDays + 1).Select(x => dt1.AddDays(x)).Where(x => x.DayOfWeek != DayOfWeek.Sunday && x.DayOfWeek != DayOfWeek.Saturday);
foreach (var item in query)
Console.WriteLine(item);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var dt1 = new DateTime(2014, 12, 1);
var dt2 = DateTime.Now;
var query = Enumerable.Range(0, (int)new TimeSpan(dt2.Ticks - dt1.Ticks).TotalDays + 1).Select(x => dt1.AddDays(x)).Where(x => x.DayOfWeek != DayOfWeek.Sunday && x.DayOfWeek != DayOfWeek.Saturday);
foreach (var item in query)
Console.WriteLine(item);
}
}
}