Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取两个日期之间的工作日_C#_.net - Fatal编程技术网

C# 获取两个日期之间的工作日

C# 获取两个日期之间的工作日,c#,.net,C#,.net,在我的程序中有两个日期计时器选择器。我需要获取所选日期之间的天数,并将它们存储到列表或数组中。所有这些都将在第二个datetimepicker值更改事件中完成 private void dateTimePickertodate_ValueChanged(object sender, EventArgs e) { if (dateTimePickertodate.Value <=dateTimePickerfromdate.Value) { MessageBo

在我的程序中有两个日期计时器选择器。我需要获取所选日期之间的天数,并将它们存储到列表或数组中。所有这些都将在第二个datetimepicker值更改事件中完成

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要求的是工作日,而不是总天数。