当前位置: 首页 > 知识库问答 >
问题:

如何获取当月的所有周数

丰超
2023-03-14
public static void getWeeksOfMonth(int month, int year) {
    SimpleDateFormat sdf = new SimpleDateFormat("EEEE dd-MMM-yyyy");
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, year);
    cal.set(Calendar.MONTH, month);
    cal.set(Calendar.DAY_OF_MONTH, 1);

    int ndays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
    System.out.println(ndays + "<<<ff");
    int inc = 1;
    for (int i = 1; i <= ndays; i++) {
        String day = sdf.format(cal.getTime());
        System.out.println(day + "<<<");
        Log.e("quest", day + "<<<");
        inc++;
        if (i % 7 == 0) {
            Log.e("question", "=======week days===========");
            inc = 0;
        }
        if (inc >= 1 && i == ndays) {

            //cal.set(Calendar.MONTH, month+1);

            Log.e("endval", " " + day);
            for (int ii = inc; ii <= 6; ii++) {
                String dayi = sdf.format(cal.getTime());
                System.out.println(dayi + "<<<");
                Log.e("quest1", dayi + "<<<");
                inc++;
                if (ii % 7 == 0) {
                }
            }

        }
        cal.add(Calendar.DATE, 1);
    }

}

输出量

2017年11月1日星期三

星期四02-十一月-2017

2017年11月3日星期五

2017年11月4日星期六

星期日05-十一月-2017

2017年11月6日星期一

2017年11月7日星期二

==========工作日===========

2017年11月8日星期三

2017年11月9日星期四

2017年11月10日星期五

2017年11月11日星期六

2017年11月12日星期日

2017年11月13日星期一

2017年11月14日星期二

==========工作日===========

2017年11月15日星期三

2017年11月16日星期四

2017年11月17日星期五

2017年11月18日星期六

2017年11月19日星期日

2017年11月20日星期一

星期二21-十一月-2017

==========工作日===========

2017年11月22日星期三

2017年11月23日星期四

星期五24-十一月-2017

2017年11月25日星期六

2017年11月26日星期日

星期一27-十一月-2017

2017年11月28日星期二

==========工作日===========

2017年11月29日星期三

星期四30-十一月-2017

星期四30-十一月-2017

星期四30-十一月-2017

星期四30-十一月-2017

星期四30-十一月-2017

星期四30-十一月-2017

但我想得到当前月份的所有周(一周中的7天)模式如下

从本月的周五开始。。

2017年11月3日星期五

2017年11月4日星期六

星期日05-十一月-2017

2017年11月6日星期一

2017年11月7日星期二

2017年11月8日星期三

2017年11月9日星期四

周四结束...

==========工作日===========

2017年11月10日星期五

2017年11月11日星期六

2017年11月12日星期日

2017年11月13日星期一

2017年11月14日星期二

2017年11月15日星期三

2017年11月16日星期四

==========工作日===========

2017年11月17日星期五

2017年11月18日星期六

2017年11月19日星期日

2017年11月20日星期一

星期二21-十一月-2017

2017年11月22日星期三

2017年11月23日星期四

==========工作日=========

星期五24-十一月-2017

2017年11月25日星期六

2017年11月26日星期日

星期一27-十一月-2017

2017年11月28日星期二

2017年11月29日星期三

星期四30-十一月-2017

==========工作日===========

2017年12月1日星期五

2017年12月2日星期六

星期日3-十二月-2017

2017年12月4日星期一

星期二5-十二月-2017

星期三6-十二月-2017

星期四7-12月-2017

以第一周的下个月结束,如果当月上周少于7天。

共有2个答案

贺轶
2023-03-14

将for循环修改为以下逻辑:

for(int i=1; i<=ndays;i+=7){

        String day = sdf.format(cal.getTime());
        System.out.println(day + "<<<");
        increment++;

        cal.add(Calendar.DATE, 1);
        if(increment >= 1){
            for(int j = 2;j <= 7;j++){
                String day1 = sdf.format(cal.getTime());
                System.out.println(day1 + "<<<");
                cal.add(Calendar.DATE, 1);
            }
            System.out.println("<<<END");
            increment = 0;
        }
    }
叶修永
2023-03-14

你必须使用这个代码,我必须修改和添加一些行。这对你有帮助

 public static void getWeeksOfMonth(int month, int year) {
        SimpleDateFormat sdf = new SimpleDateFormat("EEEE dd-MMM-yyyy");
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month);
        cal.set(DAY_OF_MONTH, 1);
        int ndays = cal.getActualMaximum(DAY_OF_MONTH);
        System.out.println(ndays + "<<<ff");
        while (cal.get(DAY_OF_WEEK) != FRIDAY) {
            cal.add(DAY_OF_MONTH, 1);
            ndays--;
        }
        int remainingDays = ndays%7;
        if(remainingDays==0)
            ndays += 7;
        else
            ndays = ndays + 7 - remainingDays;

        int inc = 1;
        for (int i = 1; i <= ndays; i++) {
            String day = sdf.format(cal.getTime());
            System.out.println(day + "<<<");
            inc++;
            if (i % 7 == 0) {
                Log.e("question", "=======week days===========");
                inc = 0;
            }
            if (inc >= 1 && i == ndays) {
                for (int ii = inc; ii <= 6; ii++) {
                    String dayi = sdf.format(cal.getTime());
                    System.out.println(dayi + "<<<");
                    Log.e("quest1", dayi + "<<<");
                    inc++;
                }
            }
            cal.add(Calendar.DATE, 1);
        }

    }

我的输出是

Friday 03-Feb-2017<<<
Saturday 04-Feb-2017<<<
Sunday 05-Feb-2017<<<
Monday 06-Feb-2017<<<
Tuesday 07-Feb-2017<<<
Wednesday 08-Feb-2017<<<
Thursday 09-Feb-2017<<<
=====week days===========
Friday 10-Feb-2017<<<
Saturday 11-Feb-2017<<<
Sunday 12-Feb-2017<<<
Monday 13-Feb-2017<<<
Tuesday 14-Feb-2017<<<
Wednesday 15-Feb-2017<<<
Thursday 16-Feb-2017<<<
=====week days===========
Friday 17-Feb-2017<<<
Saturday 18-Feb-2017<<<
Sunday 19-Feb-2017<<<
Monday 20-Feb-2017<<<
Tuesday 21-Feb-2017<<<
Wednesday 22-Feb-2017<<<
Thursday 23-Feb-2017<<<
=====week days===========
Friday 24-Feb-2017<<<
Saturday 25-Feb-2017<<<
Sunday 26-Feb-2017<<<
Monday 27-Feb-2017<<<
Tuesday 28-Feb-2017<<<
Wednesday 01-Mar-2017<<<
Thursday 02-Mar-2017<<<
=====week days===========
 类似资料:
  • 问题内容: 我需要找到给定月份和年份的所有周末日期。 例如:对于01(月),2010(年),输出应为:所有周末日期:2,3,9,10,16,17,23,24,30,31。 问题答案: 这是带有描述步骤的注释的粗略版本:

  • 问题内容: 我对sql不好,所以任何帮助世界都很棒 我有一个SQL查询,该查询获取从1月到本月注册的记录 我的代码示例 查询将如何带回 2月= 2、3月= 3、4月= 4和5月= 5 我想让它带回Jan = 1(总数为0)和June = 6(总数为0)以及任何想法如何做到这一点? 谢谢你。 问题答案: 这是创建月/年组合并将其用作查询基础的循环:

  • 假设Employee_Info表中有三名员工: 我必须编写一个select sql查询,输出如下: 正如您所看到的,新的一行应该包含某个特定雇员的所有工资的总和。

  • 我想得到两年之间的所有月份,以及两年之间的所有月份,他们的所有数据都将相加,以得到每年的销售额。 以下是我的表格截图: 截图 例如,我想获得2016年至2017年的年销售额,我需要将名称中包含2016年和2017年的所有列相加,以获得年销售额。我知道这张表不是正常的或正常的。但是这张桌子不是我的。 以下是获取两个日期之间月份的示例代码:

  • 我正在尝试在我的小树枝视图中使用for循环来获取一周中的所有日子。 以下是我想做的事情: 这就是我迄今为止所尝试的: 但我得到了这个错误信息: 在呈现模板期间引发了异常(“DateTime::_construct():无法分析位置0处的时间字符串(“0天”)(“):意外字符”) 你知道我该怎么做吗?

  • 问题内容: 我需要选择数据库中上个月创建的所有行。 例如,如果当前月份是一月,那么我想返回在十二月创建的所有行,如果月份是二月,那么我想返回在一月份创建的所有行。我的数据库中有一列,其中列出了以此格式创建的日期:。 问题答案: