问题
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<List<Training>> 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<Exercise> exerciseList;
private List<TrainingLabels> trainingLabels;
private boolean approved;
private ActivityDay activityDay;
AddTrainingCycle method:
public List<Day> addTrainingCycle(String userId, TrainingCycle trainingCycle, LocalDate localDate) {
List<Day> days = new ArrayList<>();
for (List<Training> 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?
回答1:
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);
来源:https://stackoverflow.com/questions/50543514/java-localdate-plusday-doesnt-work-properly