如何连续几天循环
本文关键字:循环 几天 连续 何连续 | 更新日期: 2023-09-27 18:08:02
我正在尝试制作一个包含开始日期和结束日期的字符串。这可以循环X天。
int nrOfDaysToLoopBy = 3;
List<string> Dates = new List<string>();
string startDate = "2014-01-01"; //this date is given to me by an api I am just hard codeing for testing
string endDate = "2014-01-30";
DateTime StartDate = DateTime.ParseExact(startDate, "yyyy-MM-dd", CultureInfo.InvariantCulture);
DateTime EndDate = DateTime.ParseExact(endDate, "yyyy-MM-dd", CultureInfo.InvariantCulture);
DateTime myDate = StartDate; // setting the initial date
for (DateTime date = StartDate.AddDays(nrOfDaysToLoopBy); date.Date <= EndDate.Date; date = date.AddDays(nrOfDaysToLoopBy))
{
Dates.Add("start-date=" + myDate.ToString("yyyy-MM-dd") + "&end-date=" + date.ToString("yyyy-MM-dd"));
myDate = date.AddDays(1);
}
// Dealing with any left over days.
if (myDate != EndDate && EndDate > myDate)
{
Dates.Add("start-date=" + myDate.ToString("yyyy-MM-dd") + "&end-date=" + EndDate.ToString("yyyy-MM-dd"));
}
我的结果:
start-date=2014-01-01&end-date=2014-01-04
start-date=2014-01-05&end-date=2014-01-07
这里的问题是,2014-01-01和2014-01-04之间有4天,而不是3天。
我试图得到的结果:
start-date=2014-01-01&end-date=2014-01-03
start-date=2014-01-04&end-date=2014-01-06
更新:我们能同意2014-01-01&end-date=2014-01-04
之间的日期是2014-01-01, 2014-01-02, 2014-01-03, and 2014-01-04
这是4
我已经玩了几个小时了,但我所做的一切都没有解决这个问题。
这里的问题是,2014-01-01和2014-01-04之间有4天,而不是3天。
有人可能会说,2014-01-01和2014-01-04之间有3天:2014-01-01到2014-01-04期间,经过了三个24小时:
- 2014-01-01-2014-01-02
- 2014-01-02-2014-01-03
- 2014-01-03-2014-01-04
你看,问题是如何在之间定义。如果要包含开始日期和结束日期,则需要调整添加的日期数。
编辑:
这解决了问题。nrOfDaysToLoopBy-1
for (DateTime date = StartDate.AddDays(nrOfDaysToLoopBy-1); date.Date <= EndDate.Date; date = date.AddDays(nrOfDaysToLoopBy))
{
}
只需更改语句:
DateTime date = StartDate.AddDays(nrOfDaysToLoopBy);
在您的for
循环中初始化为
DateTime date = StartDate.AddDays(nrOfDaysToLoopBy-1);
问题是,当你添加天数时,你所说的"介于"之间的天数实际上是你添加的天数+1。因此,星期一->星期一(增加了零天(是1天,星期一->星期二(增加了一天(是2天,等等。这就是为什么你需要对开始日期进行-1修改的原因。
循环中不需要每隔一次迭代都进行此更改的原因是myDate = date.AddDays(1)
行。这将myDate
和date
之间的差异减少了一,使其回到正确的差异