SAE*_*EDI 0 c# datetime timestamp
如何在给定开始日期和结束日期之间的每周之后获取星期一日期
例如
所以以下日期应该在列表中
Monday : 3-12-2018
Monday : 14-01-2019
Monday : 28-01-2019
Monday : 11-02-2019
Run Code Online (Sandbox Code Playgroud)
这是我的代码:我无法从 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;
}
Run Code Online (Sandbox Code Playgroud)
这是一个解决方案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;
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
{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}
Run Code Online (Sandbox Code Playgroud)