【问题标题】:JAVA - LocalDate.plusDay() doesn't work properly [duplicate]JAVA - LocalDate.plusDay() 无法正常工作 [重复]
【发布时间】:2018-05-26 13:57:13
【问题描述】:

我想创建将属于某个 trainingCycle 的培训添加到日历的方法。可能我犯了一些错误,因为它将所有培训添加到只有一天。

TrainingCycle 模型类:

@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;

训练模型类:

@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 方法:

    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;
}

我已经创建了测试方法,正如我所说的 - 它添加了所有的训练,但只是从争论开始的一天,它并没有增加 LocalDate。有人可以帮我吗?

【问题讨论】:

    标签: java unit-testing junit java-time


    【解决方案1】:

    LocalDate 是不可变的。

    localDate.plusDays(1) 不会修改当前的localDate。它返回当前日期加一的新值。

    你必须重新分配它:

    localDate = localDate.plusDays(1);
    

    【讨论】:

    • 该死的,太明显了,我什至没有关注这一点,谢谢我的朋友!
    • 不客气~
    • 很好的解释和准确的答案,谢谢。
    • 感谢您的客气
    猜你喜欢
    • 2010-11-02
    • 2017-07-15
    • 2015-09-06
    • 2016-05-06
    • 2016-05-12
    • 2018-07-19
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多