-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

質問を正しく理解しているかどうかはわかりませんが、あなたのコメントから判断すると、これは役立つかもしれません。

開始日が (年の初めから始まる) 日数で指定されている場合、次のようにして開始日を計算できます。

// 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 に答える
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 に答える