在早期的Android版本中如何显示当前一周的7个日期

3
我正在使用Java的java.time包在Android中显示基于当前日期的星期日期。我想要从星期日到星期六。
但是'Time package 链接:'是从API 26开始添加的,因此不支持API 26以下的版本。因此,我需要另一种解决方案来在API 26以下的版本上运行。
请提供一种替代方案,以便在Android中基于当前日期显示星期日期。

你想要过去7天的日期吗?(如果今天是星期三,则从上个星期四到今天),还是从这个星期日到下个星期六,即使今天是星期二。 - Aaditya Brahmbhatt
从本周日到下周六 - user3359125
2
可能是如何在Android项目中使用ThreeTenABP的重复问题。ThreeTenABP是将java.time移植到早期Android(API级别26之前)的后备库。 - Ole V.V.
2
请将您的澄清发布为问题的编辑,而不是评论。 - Basil Bourque
3个回答

2
试试这样做。
    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

因此,不支持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项目进一步适用于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 ) ;
}

谢谢你的回答。我已经在我的应用程序中实现了你的代码,但是日期方面出现了一些冲突。请查看此链接:https://photos.app.goo.gl/bMrupWd47QSyAidN6。 - user3359125

1
这里有两个日历对象。
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());

OP并不是在询问接下来7天的日期。 - Aaditya Brahmbhatt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接