java plusdays,JAVA-LocalDate.plusDay()无法正常工作

博客讨论了在Java中如何将训练周期的训练添加到日历的问题。作者发现错误在于 LocalDate 的使用,由于其不可变性,plusDays(1) 操作并未修改原始日期,导致所有训练都被添加到了同一天。解决方案是重新分配 LocalDate 变量,使其增加一天。测试方法显示问题在于日期没有正确递增。
摘要由CSDN通过智能技术生成

I want to create method thatd add trainings which belongs to some trainingCycle to calendar. Problably I made some mistake becouse it's adding all trainings to only one day.

TrainingCycle model class:

@DynamoDBTable(tableName = "trainingCycle")

public class TrainingCycle extends Request {

private String id;

private String cycleName;

private Long cycleTime;

private LocalDateTime startTime;

private List> trainingsForDay;

Training model class:

@DynamoDBTable(tableName = "training")

@DynamoDBDocument

public class Training extends Request {

private String id;

private String trainingName;

private Integer predictedCaloriesToBurn;

private Integer burnedCalories;

private LocalDateTime startTime;

private LocalDateTime endTime;

private List exerciseList;

private List trainingLabels;

private boolean approved;

private ActivityDay activityDay;

AddTrainingCycle method:

public List addTrainingCycle(String userId, TrainingCycle trainingCycle, LocalDate localDate) {

List days = new ArrayList<>();

for (List trainings : trainingCycle.getTrainingsForDay()) {

if (trainings == null || trainings.isEmpty()) {

localDate.plusDays(1);

} else {

Day actualDay = getActivityBoardDay(localDate, userId);

actualDay.getTrainings().addAll(trainings);

localDate.plusDays(1);

days.add(actualDay);

}

}

return days;

}

I've created test method and as I said - it's adding all of trainings but only for one day from argument, it's not increasing LocalDate. Can someone help me with that?

解决方案

LocalDate is immutable.

localDate.plusDays(1) does not modify the current localDate. It returns the new value which is current date plus one.

You have to reassign it:

localDate = localDate.plusDays(1);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值