0

重複の可能性:
1か月の特定の日を取得する

この問題については、C#で月の第3金曜日を見つける方法で一度触れました。しかし、そのときは問題をうまく説明できなかったので、もう一度やり直さなければなりません。

ここでの私の目標は単純です。ボタン(ここでは「Button1」と呼びます)を押すと、今日の日付がその月の第1水曜日または第3水曜日のどちらより前かを判断する必要があります。この場合、ラベルのテキスト(ここでは「lblDate」と呼びます)を、これらの将来の水曜日のいずれかが現在の日付に最も近い日付に設定する必要があります。

これまでのところ、私はこれを書いています:

protected void Button1_Click(object sender, EventArgs e)
{

    DateTime Now = DateTime.Today;
    DateTime TempDate = new DateTime(Now.Year, Now.Month, 1);

    if (TempDate.DayOfWeek != DayOfWeek.Wednesday)
    {
        TempDate = TempDate.AddDays(1);
        string date = TempDate.ToString();
        lblDate.Text = date;
    }
    if (TempDate == TempDate.AddDays(1))
    {
        TempDate = TempDate.AddDays(14);
        string date = TempDate.ToString();
        lblDate.Text = date;
    }

}

ご覧のとおり、何かが足りません。それを記入するのに助けていただければ幸いです...

4

2 に答える 2

2

これであなたの質問に答えられるかどうかは完全にはわかりませんが、正しい方向に進む可能性があります。DateTime機能から曜日を把握できます。次のようなものを使用してください。

DateTime dateValue = new DateTime(2008, 6, 11);
Console.WriteLine((int) dateValue.DayOfWeek);      // Displays 3

実際の日付と組み合わせて使用​​すると、次のようになります。

if((int) dateValue.DayOfWeek == 3) //which is Wednesday
  if(date < 7 && date > 1) 
     week == 1st Weds of month
  else(date < 21 && date > 14)
     week == 3rd Weds of month

それは明らかに正確なコードではありませんが、おそらくそれらの線に沿った何かが少し役立つでしょう。そして、月曜日に正確に落ちない最初のものを調整するために、パラメータを少し調整する必要があります。週に7日しかないため、最初の日が火曜日であっても、14と21の場合と同様に、1から7の範囲内に収まります。しかし、それを試してみれば、すぐに答えを見つける必要があります。 。

于 2012-06-17T01:44:43.610 に答える
2

次のように試すこともできます。

protected DateTime getFirstWednesdayOfMonth(DateTime seedDate)
{
    DateTime wed1 = new DateTime(seedDate.Year, seedDate.Month, 1); //1st Wednesday can start on the 1st of the month
    while (wed1.DayOfWeek != DayOfWeek.Wednesday)
    {
        wed1 = wed1.AddDays(1);
    }
    return wed1;
}

protected DateTime getThirdWednesdayOfMonth(DateTime seedDate)
{
    DateTime wed3 = new DateTime(seedDate.Year, seedDate.Month, 15); //3rd Wednesday cannot start prior to the 15th of the month
    while (wed3.DayOfWeek != DayOfWeek.Wednesday)
    {
        wed3 = wed3.AddDays(1);
    }
    return wed3;
}
protected void Button1_Click(object sender, EventArgs e)
{
    DateTime Now = DateTime.Today;
    DateTime wed1 = getFirstWednesdayOfMonth(Now);
    DateTime wed3 = getThirdWednesdayOfMonth(Now);

    if (Now < wed1)
    {
        lblDate.Text = wed1.ToString();
    }
    else if (Now < wed3)
    {
        lblDate.Text = wed3.ToString();
    }
}
于 2012-06-17T01:51:58.707 に答える