首页 文章

获取月份周数

提问于
浏览
1

我有一个代码 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

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

    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;
    }
    
  • 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);
    
  • 1

    可能这会有效

    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));
        }
    

相关问题