Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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:根据开始日期和月/周数,计算适当的日期_C#_.net_Regex_Linq_Logic - Fatal编程技术网

C# C:根据开始日期和月/周数,计算适当的日期

C# C:根据开始日期和月/周数,计算适当的日期,c#,.net,regex,linq,logic,C#,.net,Regex,Linq,Logic,我有一个给定开始日期和结束日期之间的日期列表,这些日期要么是月底日期,要么是每个月的15号。我想过滤掉所有以15号开始的日期。有没有办法在C中实现这一点 我正在考虑将数据集中的所有日期转换为字符串,并在列表中迭代,然后运行一个正则表达式,我需要它的帮助,它将从列表中删除以15开头的日期。有更好的方法解决这个问题吗?对于这个措词拙劣的问题,我深表歉意。这是我们想要做的。 给定一个开始日期,我们有一个下拉列表来选择是否要基于每月/每两周计算上一个日期。每月日期必须始终为月末日期,每两周的日期必须为1

我有一个给定开始日期和结束日期之间的日期列表,这些日期要么是月底日期,要么是每个月的15号。我想过滤掉所有以15号开始的日期。有没有办法在C中实现这一点


我正在考虑将数据集中的所有日期转换为字符串,并在列表中迭代,然后运行一个正则表达式,我需要它的帮助,它将从列表中删除以15开头的日期。有更好的方法解决这个问题吗?

对于这个措词拙劣的问题,我深表歉意。这是我们想要做的。 给定一个开始日期,我们有一个下拉列表来选择是否要基于每月/每两周计算上一个日期。每月日期必须始终为月末日期,每两周的日期必须为15日。下面是计算此值的代码

参数: dtAsOnDate是开始日期 间隔时间为每月/每两周 NumberOfInterval是我们需要返回的月数/两周数

例如,如果我选择2020年3月31日作为我的开始日期,每两周作为我的时间间隔,3作为我的时间间隔数,代码现在返回2020年2月15日,即3月31日之前的4个两周,3月31日是第一个两周

public static List<string> GetDate(DateTime dtAsOnDate, string interval, int numberOfIntervals)
        {
            DateTime currDate = dtAsOnDate;
            DateTime startDate = currDate.AddMonths(-numberOfIntervals);
            DateTime endDate = currDate;
            Func<DateTime, bool> condition = null;
            if (interval == "Monthly")
            {
                if (dtAsOnDate.Day == 15)
                    condition = date => date.Day == 15;
                else
                    condition = date => date.Day == DateTime.DaysInMonth(date.Year, date.Month);
            }
            else
            {
                condition = date => date.Day == 15 || date.Day == DateTime.DaysInMonth(date.Year, date.Month);
            }
            return Enumerable.Range(0, (endDate - startDate).Days + 1)
                     .Select(index => startDate.AddDays(index))
                     .Where(condition)
                     .TakeWhile(date => date <= endDate)
                     .OrderByDescending(date => date)
                     .Take(numberOfIntervals)
                     .Select(date => date.ToString("dd-MMM-yyyy"))
                     .ToList();

        }

使用DateTime对象,而不是字符串。您应该显示您已经尝试过的代码,以便我们可以帮助您进行尝试。要求解决一般问题被认为是粗鲁的。这不是一个代码编写服务。这是一个帮助论坛。这就是你的问题被否决的原因。dates.Whered=>d.Day!=15@JohnathanBarclay别忘了。列出日期=日期。其中d=>d.Day!=15.托利斯特@谢谢你的帮助。这个问题的答案很简单,我问了这个问题后看起来很愚蠢。然而,在我的辩护中,我确信把日期转换成字符串,然后应用正则表达式是一种方法,所以我甚至没有考虑其他更容易的可能性。非常感谢你的帮助。