Групповой список дат до номера недели?[Android] - PullRequest
0 голосов
/ 28 мая 2018

Я работаю над приложением для Android, которое будет отображать список данных.Например, если вы начинаете использовать приложение сегодня (28.05.2018) (МО), и я должен рассчитать номер недели и добавить 7 дней на этой неделе, или вы начинаете пятницу, я должен добавить 2 дня на этой неделе.

Iпопробовал этот метод 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();
    }

Я сравниваю weekOfYear с моими датами, но это неверно.

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 Ответ

0 голосов
/ 28 мая 2018

Я думаю, что вы хотите это:

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

Запуск сегодня (понедельник, 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]

Это дает вам все даты с сегодняшнего дня, включительно, дов следующий понедельник эксклюзив.Если понедельник является первым днем ​​недели, это означает оставшиеся дни этой недели.

...