c# - 在两个日期之间每周获取星期一的日期
问题描述
如何在给定的开始日期和结束日期之间的每周之后获取星期一日期
例如
- 开始日期 : 28-12-2018
- 结束日期 : 29-12-2019
所以以下日期应该在列表中
Monday : 3-12-2018
Monday : 14-01-2019
Monday : 28-01-2019
Monday : 11-02-2019
这是我的代码:我无法从 range.how 找到介于 1 周之间的每一周。
任何帮助都会被挪用
DateTime startDate = LimitVmodel.StartDate;
DateTime endDate = LimitVmodel.EndDate;
TimeSpan diff = endDate - startDate;
int days = diff.Days;
for (long i = 0; i <= days; i++)
// for (DateTime date = TIR.NetCore.PersianDateTime.ConvertShToM(LimitVmodel.StartDate); date <= TIR.NetCore.PersianDateTime.ConvertShToM(LimitVmodel.EndDate); date = date.AddDays((Double)Week))
{
DateTime date;
date = startDate.AddDays(i);
DateYear a = new DateYear();
switch (LimitVmodel.Day)
{
case "Saturday":
if (date.DayOfWeek == DayOfWeek.Saturday)
{
allDates.Add(a);
}
break;
case "Sunday":
if (date.DayOfWeek == DayOfWeek.Sunday)
{
allDates.Add(a);
}
break;
case "Monday":
if (date.DayOfWeek == DayOfWeek.Monday)
{
allDates.Add(a);
}
break;
}
解决方案
这是一个解决方案Extension
。获取DateTime
范围和星期几。
返回日期时间列表。
public static class DateUtils
{
public static List<DateTime> GetWeekdayInRange(this DateTime from, DateTime to, DayOfWeek day)
{
const int daysInWeek = 7;
var result = new List<DateTime>();
var daysToAdd = ((int)day - (int)from.DayOfWeek + daysInWeek) % daysInWeek;
do
{
from = from.AddDays(daysToAdd);
result.Add(from);
daysToAdd = daysInWeek;
} while (from < to);
return result;
}
}
用法:
namespace DatesTest
{
class Program
{
static void Main(string[] args)
{
var from = DateTime.Today; // 25/8/2019
var to = DateTime.Today.AddDays(23); // 23/9/2019
var allMondays = from.GetWeekdayInRange(to, DayOfWeek.Monday);
}
}
}
输出:
{8/26/2019 12:00:00 AM}
{9/2/2019 12:00:00 AM}
{9/9/2019 12:00:00 AM}
{9/16/2019 12:00:00 AM}
{9/23/2019 12:00:00 AM}
推荐阅读
- python - 如何让pygame运行得更快
- android - 无法使用图形视图库
- c# - Asp net Project //导出Excel函数失败
- php - 动态隐藏 Wordpress 页面上的部分
- compilation - PIC32MX270F256B 没有 C32 编译器选项
- javascript - 节点画布层替换
- asp.net - Sagepay 会话密钥 vb.net
- ios11 - 在 iOS 11 的文件提供程序扩展中,我想为用户启用我的应用程序的密码来访问文件
- excel - 使用 MessageBox 访问文件创建 Excel
- javascript - 如何先添加innerhtml,然后将eventlistner添加到后面的元素