Показать 7 дат текущей недели в более раннем Android - PullRequest
0 голосов
/ 26 сентября 2018

Я использую пакет java java.time для отображения дат недели на основе текущей даты в Android.Я хочу с воскресенья по субботу.

Но из API 26. была добавлена ​​ссылка 'Time package : '. Поэтому она не поддерживается для API ниже 26. Итак, для этого мне нужно альтернативное решение.Так что я могу запустить ниже API 26.

Пожалуйста, предоставьте мне альтернативное решение для отображения дат недели на основе текущей даты в Android.

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Попробуйте что-то вроде этого.

    int NUM_DAYS = 7; // You can get as many dates as you want.

    Calendar calendar = Calendar.getInstance();

    calendar.setFirstDayOfWeek(Calendar.SUNDAY); // The first day you want dates from.

    calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());

    for (int i=0; i < NUM_DAYS; i++){ 

        Date date = calendar.getTime();

        System.out.println(new SimpleDateFormat("EEEE dd/MM/yyyy").format(date));

        calendar.add(Calendar.DAY_OF_MONTH, 1);
    }
0 голосов
/ 26 сентября 2018

Таким образом, он не поддерживается ниже API 26.

Вы можете использовать функциональность java.time в более ранних версиях Android.Используйте бэк-порт.

Итак, для этого мне нужно альтернативное решение.

Нет, вы этого не делаете.

Сохраняйте код как есть.Бэк-порт имеет почти тот же API.Так что вам нужно сделать немного больше, чем просто поменять операторы import .

ThreeTen-Backport

Большинство функций java.time перенесено на Java 6 и Java 7 в ThreeTen-Backport проект.

Этот проект возглавляет тот же человек, Стивен Колебурн, который руководит спецификацией JSR 310, реализацией java.time и Joda-Time .

ThreeTenABP

Проект ThreeTen-Backport дополнительно адаптирован для Android специально в проекте ThreeTenABP .

Код

ZoneId z = ZoneId.systemDefault() ;  // Or ZoneId.of( "Africa/Tunis" )
LocalDate today = LocalDate.now( z ) ;

LocalDate localDate = today.with( org.threeten.bp.temporal.TemporalAdjusters.previousOrSame( DayOfWeek.SUNDAY ) ) ;
List< LocalDate > dates = new ArrayList<>( 7 ) ;
for( int i = 0 ; i < 7 ; i ++ ) {
    localDate = localDate.plusDays( i ) ;
    dates.add( localDate ) ;
}
0 голосов
/ 26 сентября 2018

Вот два объекта календаря.

Calendar calendarCurrent = Calendar.getInstance();
calendarCurrent.getTime(); // To get current date-time.

Calendar calendarWeek = Calendar.getInstance();
calendarWeek.add(Calendar.DAY_OF_MONTH, 7);
calendarWeek.getTime(); // To get after 7 day's date-time.

Если вы хотите отобразить его в режиме просмотра календаря, вы можете установить maxDate, как показано ниже.

calendarView.setMinDate(calendarCurrent.getTimeInMillis());
calendarView.setMaxDate(calendarWeek.getTimeInMillis());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...