2012-08-28 55 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

相關問題