2012-08-28 35 views
-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(','); 
+0

你的问题 - 如果有的话 - 不清楚。你应该改写... – Guillaume

+0

@Purvaesh请参阅C#TimeSpan类,我用它作为时间表项目。这是非常有用的,然后使用字符串和/或日期时间 – Moons

+0

你需要开始日期落在'星期一'?那么结束日期和你想计算的时间段是几天或几小时,请添加相关位 – V4Vendetta

回答

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

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

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

谢谢你的回复,但它不适合我。 –

+0

你得到了什么? – PradipRenushe

相关问题