C# 获取两个日期之间的工作日
在我的程序中有两个日期计时器选择器。我需要获取所选日期之间的天数,并将它们存储到列表或数组中。所有这些都将在第二个datetimepicker值更改事件中完成C# 获取两个日期之间的工作日,c#,.net,C#,.net,在我的程序中有两个日期计时器选择器。我需要获取所选日期之间的天数,并将它们存储到列表或数组中。所有这些都将在第二个datetimepicker值更改事件中完成 private void dateTimePickertodate_ValueChanged(object sender, EventArgs e) { if (dateTimePickertodate.Value <=dateTimePickerfromdate.Value) { MessageBo
private void dateTimePickertodate_ValueChanged(object sender, EventArgs e)
{
if (dateTimePickertodate.Value <=dateTimePickerfromdate.Value)
{
MessageBox.Show("Choose Correct date");
textBoxnumofdays.Clear();
}
else
{
cleave = new LeaveApplication(constr);
TimeSpan span = dateTimePickertodate.Value - dateTimePickerfromdate.Value;
if (Mode == 1)
{
textBoxnumofdays.Text = Convert.ToString(span.Days + 2);
}
else
{
textBoxnumofdays.Text = Convert.ToString(span.Days + 1);
}
}
}
private void dateTimePickertodate\u值已更改(对象发送方,事件参数e)
{
如果(dateTimePickertodate.Value使用
两个日期时间的差异是TimeSpan,它具有属性TotalDays,即两个日期时间之间的天数计数
两个日期时间的差异是TimeSpan,它具有属性TotalDays,两个日期时间之间的天数计数
此外,您希望使用TimeSpan的TotalDays属性,而不仅仅是日期。这个问题已经在这里得到了回答:
此外,您希望使用TimeSpan的TotalDays属性,而不仅仅是day。您可以在这些行中尝试一些东西
DateTime dtFrom = new DateTime(2011, 02, 5);
DateTime dtTo = new DateTime(2011, 02, 9);
List<DayOfWeek> days = new List<DayOfWeek>();
while (dtTo != dtFrom)
{
dtFrom = dtFrom.AddDays(1);
days.Add(dtFrom.DayOfWeek);
}
DateTime dtFrom=newdatetime(2011,02,5);
DateTime dtTo=新的日期时间(2011,02,9);
列表天数=新列表();
while(dtTo!=dtFrom)
{
dtFrom=dtFrom.AddDays(1);
days.Add(dtFrom.DayOfWeek);
}
天会有你的周日列表(如果这是你想要的)你可以在这些行中尝试一些东西
DateTime dtFrom = new DateTime(2011, 02, 5);
DateTime dtTo = new DateTime(2011, 02, 9);
List<DayOfWeek> days = new List<DayOfWeek>();
while (dtTo != dtFrom)
{
dtFrom = dtFrom.AddDays(1);
days.Add(dtFrom.DayOfWeek);
}
DateTime dtFrom=newdatetime(2011,02,5);
DateTime dtTo=新的日期时间(2011,02,9);
列表天数=新列表();
while(dtTo!=dtFrom)
{
dtFrom=dtFrom.AddDays(1);
days.Add(dtFrom.DayOfWeek);
}
“天”将有您的“周”列表(如果这是您想要的)您可以尝试获取两个日期之间的所有指定工作日
public List<DateTime> GetSelectedDaysInPeriod(DateTime startDate, DateTime endDate, List<DayOfWeek> daysToCheck)
{
var selectedDates = new List<DateTime>();
if (startDate >= endDate)
return selectedDates; //No days to return
if (daysToCheck == null || daysToCheck.Count == 0)
return selectedDates; //No days to select
try
{
//Get the total number of days between the two dates
var totalDays = (int)endDate.Subtract(startDate).TotalDays;
//So.. we're creating a list of all dates between the two dates:
var allDatesQry = from d in Enumerable.Range(1, totalDays)
select new DateTime(
startDate.AddDays(d).Year,
startDate.AddDays(d).Month,
startDate.AddDays(d).Day);
//And extracting those weekdays we explicitly wanted to return
var selectedDatesQry = from d in allDatesQry
where daysToCheck.Contains(d.DayOfWeek)
select d;
//Copying the IEnumerable to a List
selectedDates = selectedDatesQry.ToList();
}
catch (Exception ex)
{
//Log error
//...
//And re-throw
throw;
}
return selectedDates;
}
public List GetSelectedDaysInPeriod(日期时间开始日期、日期时间结束日期、列表日期待检查)
{
var selectedDates=新列表();
如果(开始日期>=结束日期)
返回所选日期;//无需返回天数
if(daysToCheck==null | | daysToCheck.Count==0)
返回selectedDates;//无需选择天数
尝试
{
//获取两个日期之间的总天数
var totalDays=(int)endDate.Subtract(startDate).totalDays;
//因此,我们正在创建两个日期之间所有日期的列表:
var ALLDATESKRY=可枚举范围(1,总天数)中的d
选择新的日期时间(
起始日期(d)年,
开始日期.添加日期(d).月,
开始日期和日期(d)天);
//提取我们明确想要返回的工作日
var selectedDatesQry=从allDatesQry中的d中选择
其中daysToCheck.Contains(d.DayOfWeek)
选择d;
//将IEnumerable复制到列表中
selectedDates=selectedDatesQry.ToList();
}
捕获(例外情况除外)
{
//日志错误
//...
//然后再扔
投
}
返回所选日期;
}
您可以尝试此操作以获取两个日期之间的所有指定工作日
public List<DateTime> GetSelectedDaysInPeriod(DateTime startDate, DateTime endDate, List<DayOfWeek> daysToCheck)
{
var selectedDates = new List<DateTime>();
if (startDate >= endDate)
return selectedDates; //No days to return
if (daysToCheck == null || daysToCheck.Count == 0)
return selectedDates; //No days to select
try
{
//Get the total number of days between the two dates
var totalDays = (int)endDate.Subtract(startDate).TotalDays;
//So.. we're creating a list of all dates between the two dates:
var allDatesQry = from d in Enumerable.Range(1, totalDays)
select new DateTime(
startDate.AddDays(d).Year,
startDate.AddDays(d).Month,
startDate.AddDays(d).Day);
//And extracting those weekdays we explicitly wanted to return
var selectedDatesQry = from d in allDatesQry
where daysToCheck.Contains(d.DayOfWeek)
select d;
//Copying the IEnumerable to a List
selectedDates = selectedDatesQry.ToList();
}
catch (Exception ex)
{
//Log error
//...
//And re-throw
throw;
}
return selectedDates;
}
public List GetSelectedDaysInPeriod(日期时间开始日期、日期时间结束日期、列表日期待检查)
{
var selectedDates=新列表();
如果(开始日期>=结束日期)
返回所选日期;//无需返回天数
if(daysToCheck==null | | daysToCheck.Count==0)
返回selectedDates;//无需选择天数
尝试
{
//获取两个日期之间的总天数
var totalDays=(int)endDate.Subtract(startDate).totalDays;
//因此,我们正在创建两个日期之间所有日期的列表:
var ALLDATESKRY=可枚举范围(1,总天数)中的d
选择新的日期时间(
起始日期(d)年,
开始日期.添加日期(d).月,
开始日期和日期(d)天);
//提取我们明确想要返回的工作日
var selectedDatesQry=从allDatesQry中的d中选择
其中daysToCheck.Contains(d.DayOfWeek)
选择d;
//将IEnumerable复制到列表中
selectedDates=selectedDatesQry.ToList();
}
捕获(例外情况除外)
{
//日志错误
//...
//然后再扔
投
}
返回所选日期;
}
请发布相关位,以防网站宕机。因此,应独立于其他网站。请发布相关位,以防网站宕机。因此,应独立于其他网站。您希望在列表或数组中存储何种类型的数据?您希望在列表或数组中存储何种类型的数据?OP要求的是工作日,而不是总ddays.OP要求的是工作日,而不是总天数。