简体   繁体   English

如何根据Java中的日历周从日历年中明智地获取数据

[英]How I get data week wise from a calendar year according to calendar week in Java

I am not able to separate data dynamically week wise from a calendar year according to calendar week. 我无法根据日历周从日历年中每周动态地自动分离数据。 在此处输入图片说明

Suppose I have a calendar month of January-2019 and I want to separate data weekly, then we have 5 weeks for this month 假设我的日历月是2019年1月,我想每周分离一次数据,那么这个月我们有5周的时间

1st week from 1-jan to 6-jan
2nd week from 7-jan to 13-jan
3rd week from  14-jan to 20-jan
4th week from 21-jan to 27-jan and 
5th week from 28-jan to 31 Jan and so on...

Can any body suggest anybody how I do that. 任何人都可以建议任何人我该怎么做。

What about this: 那这个呢:

    //create calendar with locale
    Calendar cal = Calendar.getInstance(Locale.GERMANY);

    //week of year you want
    int weekOfYear = 4;

    //set calendar to specified week of year
    cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);

    //set calendar to first day of the week
    //(might be different in different locales)
    cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());

    //print dates of this week
    DateFormat df = new SimpleDateFormat("EEE yyyy/MM/dd");
    for (int i = 0; i < 7; i++) {
        System.out.println(df.format(cal.getTime()));
        cal.add(Calendar.DATE, 1);
    }

It's set up for the 4th week of year (by setting weekOfYear to 4 ) and prints the following: 它设置为一年的第4周(通过将weekOfYear设置为4 )并打印以下内容:

Mon 2019/01/21
Tue 2019/01/22
Wed 2019/01/23
Thu 2019/01/24
Fri 2019/01/25
Sat 2019/01/26
Sun 2019/01/27

Is that what you need? 那是你需要的吗?

EDIT: Or even this (closer to your request): 编辑:甚至这个(更接近您的要求):

    //create calendar with locale
    Calendar cal = Calendar.getInstance(Locale.GERMANY);

    //weeks of year you want
    int fromWeek = 1;
    int toWeek = 10;

    //date format
    DateFormat df = new SimpleDateFormat("EEE yyyy/MM/dd");

    //print date range
    for (int i = fromWeek; i <= toWeek; i++) {
        //set calendar to specified week of year
        cal.set(Calendar.WEEK_OF_YEAR, i);
        //set calendar to first day of the week
        //(might be different in different locales)
        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());

        //print date range of this week
        System.out.print(
            "Week no. " + i + " from " +
            df.format(cal.getTime()) + " to "
        );
        cal.add(Calendar.DAY_OF_YEAR, 6);
        System.out.println(df.format(cal.getTime()));
    }

It prints: 它打印:

Week no. 1 from Mon 2018/12/31 to Sun 2019/01/06
Week no. 2 from Mon 2019/01/07 to Sun 2019/01/13
Week no. 3 from Mon 2019/01/14 to Sun 2019/01/20
Week no. 4 from Mon 2019/01/21 to Sun 2019/01/27
Week no. 5 from Mon 2019/01/28 to Sun 2019/02/03
Week no. 6 from Mon 2019/02/04 to Sun 2019/02/10
Week no. 7 from Mon 2019/02/11 to Sun 2019/02/17
Week no. 8 from Mon 2019/02/18 to Sun 2019/02/24
Week no. 9 from Mon 2019/02/25 to Sun 2019/03/03
Week no. 10 from Mon 2019/03/04 to Sun 2019/03/10

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM