获取月份周数

时间:2014-05-28 04:59:08

标签: c# .net vb.net date

我有一个代码2014P07W4,意思是:

2014 =年

P07 =一年中的第7个月

W4 =本月第4周。

我想计算出2014年7月第4周第一天的日期。在这个例子中,我希望看到2014年7月21日的日期。

2014年7月

  • 第1周 - 第1至第6周
  • 第2周 - 第7至第13周
  • 第3周 - 第14至第20周
  • 第4周 - 第21至第27周
  • 第5周 - 第28至第31周

从代码我知道周数= 4然后我希望能够计算日期21/7/2014。我假设一周的第一天是星期一

我问如何阅读该代码并获取指定的一周的第一天

希望这是一个漫长的一天更清楚

3 个答案:

答案 0 :(得分:1)

您需要解析代码并提取年份,月份和周数。 然后,您可以使用此方法获取一周的开始日期:

int WeekStartDay(int year, int month, int weekNo)
{
    DateTime monthStart = new DateTime(year, month, 1);

    int monthStart_DayOfWeek = ((int)monthStart.DayOfWeek + 6) % 7;

    int weekStart_DayOfMonth = 1;
    if (1 < weekNo) {
        weekStart_DayOfMonth += 7 - monthStart_DayOfWeek;
    }
    if (2 < weekNo) {
        weekStart_DayOfMonth += 7 * (weekNo - 2);
    }
    return weekStart_DayOfMonth;
}

答案 1 :(得分:0)

参加下个月的第一天(2014/07/01),找到下周一(第2周的第一天),添加14天(第4周的第1天)。

DateTime date = new DateTime(2014, 7, 1);
int daysToFirstDayOf2ndWeek = date.DayOfWeek == DayOfWeek.Monday
                              ? 7
                              : ((int)DayOfWeek.Monday - (int)date.DayOfWeek + 7) % 7;
DateTime firstDayOf2ndWeek = date.AddDays(daysToFirstDayOf2ndWeek);
DateTime firstDayOf4thWeek = firstDayOf2ndWeek.AddDays(14);

答案 2 :(得分:0)

可能会有效

    string code = "2014P07W4";
    int yr = int.Parse(code.Substring(0, 4));
    int mnth = int.Parse(code.Substring(5, 2));
    int week = int.Parse(code.Substring(8));

    DateTime dt = new DateTime(yr, mnth, 1);
    if (dt.DayOfWeek == DayOfWeek.Monday)
    {
        DateTime newdate = dt.AddDays((week - 1) * 7);
    }
    else
    {
        DateTime newdate = dt.AddDays((8 - (int)dt.DayOfWeek) % 7 + ((week - 2) * 7));
    }