为什么for循环使用calendar获取日期复制给两个函数最后函数值会一样。


 @GetMapping("/findall")
    public Result findall(@RequestParam String uid) throws ParseException {
        QueryWrapper queryWrapper=new QueryWrapper();
        queryWrapper.in("uid",uid);
        List dates=new ArrayList<>();
        dates= dateMapper.selectList(queryWrapper);
        dateDTO dateDTO=new dateDTO();
        List dateDTOS =new ArrayList<>();
        for (sDate date: dates){
            String time=date.getTime();//获取数据库中的时间
            Date date1 = new SimpleDateFormat("yyyy-MM-dd").parse(time);//将获取的时间转换成date对象
            Calendar ca = Calendar.getInstance();
            ca.setTime(date1);
            int day = ca.get(Calendar.DATE);//一年中的第几天
            int month = ca.get(Calendar.MONTH)+1;//第几个月 8
            int year = ca.get(Calendar.YEAR);//年份数值 2021
            dateDTO.setDay(day);
            dateDTO.setMonths(month);
            dateDTO.setYear(year);
            System.out.println("总"+dateDTO);
            dateDTOS.add(dateDTO);
        }
        System.out.println("一起"+dateDTOS);
        return Result.success(dateDTOS);
    }

img

你的对象在循环外面构建的,所以就算放进集合里面两次,本质上是一个对象

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/732512
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:日历日程安排表格calendar
  • 除此之外, 这篇博客: Calendar(日历)中的 日历字段 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    时间字段描述
    YEAR
    MONTH月(必须加一,默认一月为0)
    DATE
    DAY_OF_MONTH这个月的第多少天
    DAY_OF_YEAR一年的第多少天
    HOUR时(12小时制 2021-11-25 01:30:00)
    HOUR_OF_DAY时(24小时制 2021-11-25 13:30:00)
    MINUTE
    SECOND
    MILLISECOND毫秒
    DAY_OF_WEEK周几
    WEEK_OF_YEAR一年的第多少周
    DAY_OF_WEEK_IN_MONTH某月中第几周
    WEEK_OF_MONTH日历式的第几周

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^