0

可能重复:
获取一个月中的特定日期

我之前曾在如何使用 C# 找到一个月中的第三个星期五?但由于我当时没有很好地解释我的问题,我必须再试一次:

我的目标很简单:按下按钮(此处称为“Button1”)后,我必须确定今天的日期是在月的第一个星期三还是第三个星期三之前。如果是这种情况,我必须将标签的文本(此处称为“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 天,即使第一天是在星期二,它也只是在 1 和 7 的范围内,同样适用于 14 和 21。但只要玩弄它,你应该很快就能找到答案.

于 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 回答