C# 添加从星期一开始的日期范围

C# 添加从星期一开始的日期范围,c#,asp.net,calendar,C#,Asp.net,Calendar,我正在开发一个时隙生成功能,其中我必须生成当前年份的起始日期和截止日期。时段的持续时间将插入文本框中 在这里,我在今年有一个时间段,但我需要从周一开始的所有日期 因此,如果某个时段在周五开始,那么就跳过这几天直到周一 在这里,我没有从周一开始就做到了: string fdate = "01/01/" + System.DateTime.Today.Year; fdate = Convert.ToDateTime(fdate).AddDays(-1).ToString(); string ffda

我正在开发一个时隙生成功能,其中我必须生成当前年份的起始日期和截止日期。时段的持续时间将插入文本框中

在这里,我在今年有一个时间段,但我需要从周一开始的所有日期

因此,如果某个时段在周五开始,那么就跳过这几天直到周一

在这里,我没有从周一开始就做到了:

string fdate = "01/01/" + System.DateTime.Today.Year;
fdate = Convert.ToDateTime(fdate).AddDays(-1).ToString();
string ffdate = "";
string ttdate = "";
for (int date = 0; date < 365; )
{
    ffdate += Convert.ToDateTime(fdate).AddDays(1 + date).ToString() + ",";
    date += Convert.ToInt32(txtTime.Text);
    ttdate += Convert.ToDateTime(fdate).AddDays(date).ToString() + ",";
}
fromdate = ffdate.TrimEnd(',');
todate = ttdate.TrimEnd(',');
string fdate=“01/01/”+System.DateTime.Today.Year;
fdate=Convert.ToDateTime(fdate).AddDays(-1).ToString();
字符串ffdate=“”;
字符串ttdate=“”;
对于(整数日期=0;日期<365;)
{
ffdate+=Convert.ToDateTime(fdate).AddDays(1+date).ToString()+“,”;
日期+=转换为32(txtime.Text);
ttdate+=Convert.ToDateTime(fdate).AddDays(date).ToString()+“,”;
}
fromdate=ffdate.TrimEnd(',');
todate=ttdate.TrimEnd(',');
试试这个

int day= 31; 
int month = 12;
bool IsMonday =false;
string fdate = day.Tostring() + "/"+month.Tostring()+ "/" + System.DateTime.Today.Year;
while(IsMonday )
{   

    if(DayOfWeek.Monday == (DateTime.ParseExact(fdate , "d", CultureInfo.InvariantCulture)).DayOfWeek) {
        IsMonday = true;
    } else {
        if(day==31){
            day= 1;
            month =1;
        } else {
            day= day+1;
            month =1;
        }
        fdate = day.Tostring() + "/"+month.Tostring()+ "/" + System.DateTime.Today.Year;
    }
}
string ffdate = "";
string ttdate = "";
for (int date = 0; date < 365; date=date+7 ){
    ffdate += Convert.ToDateTime(fdate).AddDays(date).ToString() + ",";        
    ttdate += Convert.ToDateTime(fdate).AddDays(Convert.ToInt32(txtTime.Text)).ToString() + ",";
}
fromdate = ffdate.TrimEnd(',');
todate = ttdate.TrimEnd(',');
int-day=31;
整月=12;
bool-IsMonday=false;
字符串fdate=day.Tostring()+“/”+month.Tostring()+“/”+System.DateTime.Today.Year;
while(IsMonday)
{   
if(DayOfWeek.Monday==(DateTime.ParseExact(fdate,“d”,CultureInfo.InvariantCulture)).DayOfWeek){
IsMonday=真;
}否则{
如果(天==31){
日=1;
月=1;
}否则{
天=天+1;
月=1;
}
fdate=day.Tostring()+“/”+month.Tostring()+“/”+System.DateTime.Today.Year;
}
}
字符串ffdate=“”;
字符串ttdate=“”;
对于(整数日期=0;日期<365;日期=日期+7){
ffdate+=Convert.ToDateTime(fdate).AddDays(date).ToString()+“,”;
ttdate+=Convert.ToDateTime(fdate).AddDays(Convert.ToInt32(txtTime.Text)).ToString()+;
}
fromdate=ffdate.TrimEnd(',');
todate=ttdate.TrimEnd(',');

我不确定我是否正确理解了这个问题,但从您的评论来看,这可能是有用的

如果起始日期以天为单位(从年初开始),则可以通过执行以下操作来计算起始日期:

// minus one if entering 1 in the textbox means 1st of January. 
// Remove if 1st of January would require the user to enter 0
var daysToAdd = (int)textBoxFrom.Text - 1;
var fromDate = new DateTime(DateTime.Now.Year, 1, 1).AddDays(daysToAdd);
// you could also do: new DateTime(DateTime.Now.Year, 1, (int)textBoxFrom.Text)
现在,查找第一个星期一:

for (var i = 0; i < 7; i++)
{
    if (fromDate.AddDays(i).DayOfWeek == DayOfWeek.Monday)
    {
        fromDate = fromDate.AddDays(i);
    }
}

现在您有了日期,如果需要,可以将其转换为字符串。另外,你可能想退房。我刚刚转换了文本框的内容,假设输入了正确的整数。但也许用户可以输入字母,这会给您一个例外。

您的问题(如果有)不清楚。你应该换个说法…@Purvaesh见C#TimeSpan class我把它用于一个时间表项目。然后使用字符串和/或DateTime非常有用。您需要开始日期落在
周一
?那么,结束日期和您要计算的时间段是多少,以天或小时为单位,请添加相关位。我只需要从星期一开始的日期和今天的日期分别作为起始日期和时间段以天为单位。
var toDate = fromDate.AddDays((int)textBoxDays.Text);