Java 分组日期列表到周数?[安卓]

Java 分组日期列表到周数?[安卓],java,android,week-number,date,Java,Android,Week Number,Date,我正在开发一个android应用程序,它将显示一个数据列表。例如,如果您今天(2018年5月28日)(MO)开始使用应用程序,我必须计算周数并在本周添加7天,或者您从周五开始,我必须在本周添加2天 我试过这个方法 但这对我来说是错误的。首先,我添加了日期和时间 TreeMap<Integer, List<Date>> dateHashMap = new TreeMap<>(); SimpleDateFormat sdf = new SimpleDat

我正在开发一个android应用程序,它将显示一个数据列表。例如,如果您今天(2018年5月28日)(MO)开始使用应用程序,我必须计算周数并在本周添加7天,或者您从周五开始,我必须在本周添加2天

我试过这个方法 但这对我来说是错误的。首先,我添加了日期和时间

 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();
    }
TreeMap dateHashMap=newtreemap();
SimpleDataFormat sdf=新的SimpleDataFormat(“日/月/年”);
List spDates=new ArrayList();
试一试{
spDates.add(sdf.parse(“2018年6月2日”);
spDates.add(sdf.parse(“2018年6月1日”);
spDates.add(sdf.parse(“2018年5月31日”);
spDates.add(sdf.parse(“30/05/2018”);
spDates.add(sdf.parse(“2018年5月29日”);
spDates.add(sdf.parse(“28/05/2018”);
spDates.add(sdf.parse(“2018年5月27日”);
spDates.add(sdf.parse(“2018年5月26日”);
spDates.add(sdf.parse(“2018年5月25日”);
}捕获(解析异常){
e、 printStackTrace();
}
我把一周和一年的日期作比较,但这是错误的

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());
for(int i=0;i
你知道如何将我的日期分组到周数吗?

我想你想要这个:

    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));
今天(5月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]

它为您提供从今天(含)到下周一(不含)的所有日期。如果周一是一周的第一天,这意味着本周的剩余几天。

您所描述的尝试解决方案听起来并不能解决您所述的问题。帮我理解。你是说你不知道如何得到给定日期和周日之间的差值?或者,你在一周中抽出一天并将其解决到某个日期后的几周内有困难吗?在这种情况下,你所要做的就是计算delta和除以7?顺便考虑一下,把长期过时的和臭名昭著的麻烦代码< SimpleDateFormat >代码>和朋友添加到Android项目中,以便使用< java > java >时间>代码>,即现代Java日期和时间API。和他一起工作真是太好了。我知道,但是整个月都完成了30或31。我不想用完成了30或31来计算周数。例如,第22周(28.06.2018-03.06.2018)是这样的。你能在API级别上使用Java stream API吗?听起来它的分组功能正适合您。您能解释一下从链接答案中获取的代码的结果有什么问题吗?问,因为对我来说,这里引用的输出似乎符合我认为你想要的。