C# C:根据开始日期和月/周数,计算适当的日期
我有一个给定开始日期和结束日期之间的日期列表,这些日期要么是月底日期,要么是每个月的15号。我想过滤掉所有以15号开始的日期。有没有办法在C中实现这一点C# C:根据开始日期和月/周数,计算适当的日期,c#,.net,regex,linq,logic,C#,.net,Regex,Linq,Logic,我有一个给定开始日期和结束日期之间的日期列表,这些日期要么是月底日期,要么是每个月的15号。我想过滤掉所有以15号开始的日期。有没有办法在C中实现这一点 我正在考虑将数据集中的所有日期转换为字符串,并在列表中迭代,然后运行一个正则表达式,我需要它的帮助,它将从列表中删除以15开头的日期。有更好的方法解决这个问题吗?对于这个措词拙劣的问题,我深表歉意。这是我们想要做的。 给定一个开始日期,我们有一个下拉列表来选择是否要基于每月/每两周计算上一个日期。每月日期必须始终为月末日期,每两周的日期必须为1
我正在考虑将数据集中的所有日期转换为字符串,并在列表中迭代,然后运行一个正则表达式,我需要它的帮助,它将从列表中删除以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.托利斯特@谢谢你的帮助。这个问题的答案很简单,我问了这个问题后看起来很愚蠢。然而,在我的辩护中,我确信把日期转换成字符串,然后应用正则表达式是一种方法,所以我甚至没有考虑其他更容易的可能性。非常感谢你的帮助。