在较早的Android中显示当前星期的7个日期

时间:2018-09-26 06:48:40

标签: java android datetime

我正在使用Java的 java.time 包来显示基于Android中当前日期的星期日期。我想要星期天到星期六。

但是'Time package link:'是从API 26添加的。因此,API 26以下不支持它。因此,我需要一个替代解决方案。这样,我可以在API 26以下运行。

请为我提供一个替代解决方案,以根据Android中的当前日期显示星期日期。

3 个答案:

答案 0 :(得分:2)

  

因此,API 26以下不支持它。

可以使用早期的Android中的 java.time 功能。使用后端口。

  

因此,我需要一个替代解决方案。

不,你没有。

保持代码原样。后端端口几乎具有相同的API。因此,您只需要交换 import 语句即可。

ThreeTen-Backport

大多数 java.time 功能都在 ThreeTen-Backport 项目中反向移植到Java 6和Java 7。

该项目由同一人Stephen Colebourne领导,他领导JSR 310规范, java.time 实现和 Joda-Time

ThreeTenABP

ThreeTen-Backport 项目在 ThreeTenABP 项目中进一步针对Android进行了改编。

代码

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

答案 1 :(得分:1)

尝试这样的事情。

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

答案 2 :(得分:0)

这是两个Calendar对象。

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