代码之家  ›  专栏  ›  技术社区  ›  TsigumEnes

将日期列表分组到第几周?[安卓]

  •  -1
  • TsigumEnes  · 技术社区  · 7 年前

    我正在开发一个显示数据列表的Android应用程序。例如,如果你今天开始使用app(28.05.2018)(mo),我必须计算周数并在本周增加7天,或者你从星期五开始,我必须在本周增加2天。

    我试过这个方法 https://stackoverflow.com/a/42733001/9259044 但我错了。首先,我添加了日期和

     TreeMap<Integer, List<Date>> dateHashMap = new TreeMap<>();
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        List<Date> spDates = new ArrayList<>();
    
    
        try {
    
    
            spDates.add(sdf.parse("02/06/2018"));
            spDates.add(sdf.parse("01/06/2018"));
            spDates.add(sdf.parse("31/05/2018"));
            spDates.add(sdf.parse("30/05/2018"));
            spDates.add(sdf.parse("29/05/2018"));
    
            spDates.add(sdf.parse("28/05/2018"));
            spDates.add(sdf.parse("27/05/2018"));
    
            spDates.add(sdf.parse("26/05/2018"));
            spDates.add(sdf.parse("25/05/2018"));
    
    
        } catch (ParseException e) {
            e.printStackTrace();
        }
    

    我把一年中的某个星期和我的约会进行比较,但这是错误的。

    for (int i = 0; i < spDates.size(); i++) {
            List<Date> datesList = new ArrayList<>();
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(spDates.get(i));
    
            int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
    
    
            for (Date date : spDates) {
                Calendar c = Calendar.getInstance();
                c.setTime(date);
                if (weekOfYear == c.get(Calendar.WEEK_OF_YEAR)) {
                    datesList.add(date);
                }
            }
    
            dateHashMap.put(weekOfYear, datesList);
    
    
        }
    
       Log.d("DATE",dateHashMap.toString());
    

    你知道我该如何把我的日期分组到第几周吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Anonymous    7 年前

    我想你想要这个:

        LocalDate today = LocalDate.now(ZoneId.of("Europe/Istanbul"));
    
        int weekNumber = today.get(WeekFields.ISO.weekOfYear());
        System.out.println("Week no. " + weekNumber);
    
        LocalDate[] days = today.datesUntil(today.with(TemporalAdjusters.next(DayOfWeek.MONDAY)))
                .toArray(LocalDate[]::new);
        System.out.println(Arrays.toString(days));
    

    今天(5月28日,星期一)印刷

    Week no. 22
    [2018-05-28, 2018-05-29, 2018-05-30, 2018-05-31, 2018-06-01, 2018-06-02, 2018-06-03]
    

    它为您提供从今天(包括今天)到下周一(包括下周一)的所有日期。如果星期一是一周的第一天,这意味着这周的剩余天数。