───────┬────────────────────────────────────────────────────────────────────────
       File: src/main//java/jp/ac/kobe_u/cs/itspecialist/todoapp/dto/ToDoForm.java
───────┼────────────────────────────────────────────────────────────────────────
   1    package jp.ac.kobe_u.cs.itspecialist.todoapp.dto;
   2    
   3    import java.time.Instant;
   4    import java.time.LocalDateTime;
   5    import java.time.ZoneId;
   6    import java.time.ZonedDateTime;
   7    import java.util.Date;
   8    
   9    import javax.validation.constraints.NotBlank;
  10    import javax.validation.constraints.Size;
  11    
  12    import jp.ac.kobe_u.cs.itspecialist.todoapp.entity.ToDo;
  13    import lombok.Data;
  14    import org.springframework.format.annotation.DateTimeFormat;
  15    
  16    /**
  17     * ToDoの入力フォーム
  18     */
  19    @Data
  20    public class ToDoForm {
  21        @NotBlank
  22        @Size(min=1, max=64)
  23        String title; //ToDo題目
  24        @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
  25        LocalDateTime due; // 期限
  26    
  27        @NotBlank
  28        @Size(min=6, max=8)
  29        String background; // 背景色
  30    
  31        public ToDo toEntity() {
  32            ToDo t = new ToDo();
  33            t.setTitle(title);
  34            t.setCreatedAt(new Date());
  35            t.setDone(false);
  36            t.setDueAt(getDueDate());
  37            t.setBackground(background);
  38            return t;
  39        }
  40    
  41        public Date getDueDate() {
  42            if (due == null) {
  43                return null;
  44            }
  45            return toDate(due);
  46        }
  47    
  48        private Date toDate(LocalDateTime ldt) {
  49            ZoneId id = ZoneId.systemDefault();
  50            ZonedDateTime zdt = ZonedDateTime.of(ldt, id);
  51            Instant instant = zdt.toInstant();
  52            return Date.from(instant);
  53        }
  54    }
───────┴────────────────────────────────────────────────────────────────────────