-1

我正在研究一个时隙生成功能,在该功能中我必须生成当年的起始日期和截止日期。时隙的持续时间将插入文本框中。

在这里,我在本年度创建了一个时间段,但我只需要从星期一开始所有起始日期。

所以,如果一个时段从星期五开始,那么跳过直到星期一的日子。

在这里,我没有从星期一开始就完成了:

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(',');
4

2 回答 2

0

试试这个

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(',');
于 2012-08-28T05:19:53.103 回答
0

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

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

// 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);
    }
}

最后,计算当前日期:

var toDate = fromDate.AddDays((int)textBoxDays.Text);

现在您有了日期,并且可以在必要时将它们转换为字符串。此外,您可能想查看int.TryParse. 假设输入了正确的整数,我刚刚转换了文本框的内容。但也许用户可以输入字母,这会给你一个例外。

于 2012-08-28T07:20:58.783 回答