Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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#_Asp.net - Fatal编程技术网

C# 如何获取整个月选定日期的日期?

C# 如何获取整个月选定日期的日期?,c#,asp.net,C#,Asp.net,我想选择一天,比如说星期一。现在我想得到所有周一的日期,这些周一在那个月,或者在两个选定的日期之间。 例如 选定日期:星期一 开始日期:3月1日 结束日期:4月30日 这必须给我所有的8个星期一,这两个日期之间的日期。我已经准备好使用DropDownList或calendar或任何必要的工具来完成这项工作。 我正在使用Visual Studio 2010的C语言。试试这个 DateTime d1 = DateTime.Parse("03/01/2013"); DateTime d2 = Date

我想选择一天,比如说星期一。现在我想得到所有周一的日期,这些周一在那个月,或者在两个选定的日期之间。 例如

选定日期:星期一

开始日期:3月1日

结束日期:4月30日

这必须给我所有的8个星期一,这两个日期之间的日期。我已经准备好使用DropDownList或calendar或任何必要的工具来完成这项工作。 我正在使用Visual Studio 2010的C语言。

试试这个

DateTime d1 = DateTime.Parse("03/01/2013");
DateTime d2 = DateTime.Parse("04/01/2013");

int days = (d2 - d1).TotalDays;

for (i = 0; i <= days; i++) {
    DateTime d = d1.AddDays(i);
    if ((d.DayOfWeek == DayOfWeek.Monday)) {
        Console.WriteLine(d);   //dateList.Add(d);   <------ this could be a List<DateTime> or List<string>
    }
}

Output - M/dd/yyyy format
-------
3/04/2013
3/11/2013
3/18/2013
3/25/2013
4/01/2013

这是一个非常简单的算法:

    public static List<DateTime> GetDayOccurrences(DayOfWeek day, DateTime from, DateTime to)
    {
        var results = new List<DateTime>();

        while (from <= to)
        {
            if (from.DayOfWeek == day)
            {
                results.Add(from);
                from = from.AddDays(7);
            }
            else
            {
                from = from.AddDays(1);
            }

        }
        return results;
    }
更新

也可以通过这种方式删除循环中的if语句:

    public static List<DateTime> GetDayOccurrences(DayOfWeek day, DateTime from, DateTime to)
    {
        var results = new List<DateTime>();

        while(from <= to && from.DayOfWeek != day)
            from = from.AddDays(1);

        while (from <= to)
        {
            results.Add(from);
            from = from.AddDays(7);
        }

        return results;
    }

让我们看一个尝试…@JW。我正在使用MS SQL Server2008@MitchWheat我甚至不知道从哪里开始。我添加了一个日历控件,但这只会给我一个日期。我是个初学者,所以请容忍我。@JW。应用程序级别。不过,我会在以后将日期插入数据库。@MitchWheat抱歉,我不理解这个问题。删除我的所有评论…我正在使用webforms。不过,您的代码可以正常工作。顺便问一下,我应该用什么来存储输出日期?ArrayList?你有什么建议?我也不想硬编码星期一。用户必须能够自己选择日期。您可以将其添加到列表中,例如ArrayList、list、list等,而不是Console.WriteLine,并将其绑定到DropdownList。我想你应该能够计算出剩余的时间。我不仅仅想要计数,我还想存储日期。全部9个。用户还必须能够自己选择日期。该方法返回包含所有找到日期的列表!
2013-03-04
2013-03-11
2013-03-18
2013-03-25
2013-04-01
2013-04-08
2013-04-15
2013-04-22
2013-04-29
    public static List<DateTime> GetDayOccurrences(DayOfWeek day, DateTime from, DateTime to)
    {
        var results = new List<DateTime>();

        while(from <= to && from.DayOfWeek != day)
            from = from.AddDays(1);

        while (from <= to)
        {
            results.Add(from);
            from = from.AddDays(7);
        }

        return results;
    }