Надо сгруппировать все даты по неделям

162
24 января 2018, 15:30

Получаю я дату заказа в String в таком формате 2017-07-25T13:24:46+0300 И мне надо сгруппировать все даты по неделям. То есть, например, на этой неделе были выполнены такие-то заказы, на позапрошлой неделе были такие заказы и т.д И сформировать из недельных отчётов коллекцию String.

Answer 1

Посмотрите пример ниже. Полученная из String дата парсится и переводится в календарь. У календаря есть метод - получить номер недели от начала года. Соответственно все данные можно сохранять понедельно.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
    private Button button;
    private Map<Integer, List<String>> dates;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dates = new HashMap<>();
        putDataInCollection("2017-01-01T13:24:46+0300");
        putDataInCollection("2017-01-01T13:24:46+0300");
        putDataInCollection("2017-01-05T13:24:46+0300");
        putDataInCollection("2017-01-10T13:24:46+0300");
        putDataInCollection("2017-01-12T13:24:46+0300");
        putDataInCollection("2017-01-15T13:24:46+0300");
    }
    private void putDataInCollection(String order){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(getDate(order));

        List<String> datesList ;
        if (dates.get(calendar.get(Calendar.WEEK_OF_YEAR))!=null) {
            datesList = dates.get(calendar.get(Calendar.WEEK_OF_YEAR));
        } else {
            datesList = new ArrayList<>();
        }
        datesList.add(order);
        dates.put(calendar.get(Calendar.WEEK_OF_YEAR),datesList);
    }

    private Date getDate(String date) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'kk:mm:ssZ");
        Date convertedDate = new Date();
        try {
            convertedDate = dateFormat.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return convertedDate;
    }
}
READ ALSO
Как завернуть шаблон в шаблон Spring boot FreeMaker?

Как завернуть шаблон в шаблон Spring boot FreeMaker?

У меня есть некий контроллер вида:

195
Многопоточный бинарный поиск MPI - C++ / Java Threads [требует правки]

Многопоточный бинарный поиск MPI - C++ / Java Threads [требует правки]

здравствуйте, может кто поделиться кодом многопоточного бинарного поиска числа в массиве, при помощи C++ MPI и/или Java ThreadsСпасибо

165
Что означает класс реализует интерфейс?

Что означает класс реализует интерфейс?

Встретил это в книге по Java Яков Файн "Программирование на Java

176
Внутренние отступы в окне Java FX

Внутренние отступы в окне Java FX

Создал окноДобавил элементов

164