C# 星期一';s在两个日期之间每周的日期
如何在给定的开始日期和结束日期之间获得每周之后的星期一日期 比如说C# 星期一';s在两个日期之间每周的日期,c#,datetime,timestamp,C#,Datetime,Timestamp,如何在给定的开始日期和结束日期之间获得每周之后的星期一日期 比如说 开始日期:2018年12月28日 截止日期:2019年12月29日 所以以下日期应该在列表中 Monday : 3-12-2018 Monday : 14-01-2019 Monday : 28-01-2019 Monday : 11-02-2019 这是我的代码:我无法从范围中找到介于这两周之间的日期。如何识别从1周开始的日期 任何帮助都将被占用 DateTime startDate =
- 开始日期:2018年12月28日
- 截止日期:2019年12月29日
Monday : 3-12-2018
Monday : 14-01-2019
Monday : 28-01-2019
Monday : 11-02-2019
这是我的代码:我无法从范围中找到介于这两周之间的日期。如何识别从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;
}
DateTime startDate=LimitVmodel.startDate;
DateTime endDate=LimitVmodel.endDate;
TimeSpan diff=结束日期-开始日期;
整数天=差异天;
对于(长i=0;iDateTime日期=LimitVmodel.StartDate;
开关(LimitVmodel){
案件“星期一”:
while(date.DayOfWeek!=DayOfWeek.Monday){
日期=日期。添加天数(1);
}
打破
案件“星期二”:
while(date.DayOfWeek!=DayOfWeek.周二){
日期=日期。添加天数(1);
}
打破
//等等。。。
}
所有日期。添加(日期);
while(DateTime.compare(date,LimitVmodel.EndDate)这里有一个扩展名为的解决方案。
获取日期时间范围和一周中的一天
返回日期时间的列表
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;
}
}
输出:
{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}
您可以使用for
循环检查您进入LimitVmodel.day
的日期,并整理当天的所有日期。如下所示:
DateTime startDate = LimitVmodel.StartDate;
DateTime endDate = LimitVmodel.EndDate;
int days = (endDate - startDate).Days;
string myDay = LimitVmodel.Day;
var myDayDayOfWeek = (DayOfWeek)Enum.Parse(typeof(DayOfWeek),myDay); //convert string to DayOfWeek type
var allDates = new List<DateTime>();
for(int i=0; i < days; i++)
{
var currDate = startDate.AddDays(i);
if(currDate.DayOfWeek == myDayDayOfWeek)
allDates.Add(currDate);
}
DateTime startDate=LimitVmodel.startDate;
DateTime endDate=LimitVmodel.endDate;
整数天=(结束日期-开始日期).days;
字符串myDay=LimitVmodel.Day;
var myDayDayOfWeek=(DayOfWeek)Enum.Parse(typeof(DayOfWeek),myDay);//将字符串转换为DayOfWeek类型
var allDates=新列表();
对于(int i=0;i
为什么你的结果不应该有1月9日、1月23日和2月7日?这些日期也是星期一。只需从开始日期开始,检查是否是星期一。如果不是增加1,请再次检查,直到找到一个星期一并打破循环-或者,你可以从你得到的星期一开始计算第一个星期一,但这不是真正的nee因为循环最多只能检查7个日期。在您找到第一个星期一后,只需开始一个新循环,增量为7天,直到您在结束日期之后才能找到所有其他的星期一。@EyIM您能分享所有代码吗?我在主程序中如何称呼它?@Zong我已经更新了使用代码。非常感谢@EyIM,您能hare如何从日期中删除该时间2019年8月26日12:00:00 AM
我希望这样输出2019年8月26日
@Zong-只需使用DateTime ToString成员函数。ToString(“M/d/yyyy”);为什么DateTime不出现?
{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}
DateTime startDate = LimitVmodel.StartDate;
DateTime endDate = LimitVmodel.EndDate;
int days = (endDate - startDate).Days;
string myDay = LimitVmodel.Day;
var myDayDayOfWeek = (DayOfWeek)Enum.Parse(typeof(DayOfWeek),myDay); //convert string to DayOfWeek type
var allDates = new List<DateTime>();
for(int i=0; i < days; i++)
{
var currDate = startDate.AddDays(i);
if(currDate.DayOfWeek == myDayDayOfWeek)
allDates.Add(currDate);
}