───────┬────────────────────────────────────────────────────────────────────────
       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        public ToDo toEntity() {
  28            ToDo t = new ToDo();
  29            t.setTitle(title);
  30            t.setCreatedAt(new Date());
  31            t.setDone(false);
  32            t.setDueAt(getDueDate());
  33            return t;
  34        }
  35    
  36        public Date getDueDate() {
  37            if (due == null) {
  38                return null;
  39            }
  40            return toDate(due);
  41        }
  42    
  43        private Date toDate(LocalDateTime ldt) {
  44            ZoneId id = ZoneId.systemDefault();
  45            ZonedDateTime zdt = ZonedDateTime.of(ldt, id);
  46            Instant instant = zdt.toInstant();
  47            return Date.from(instant);
  48        }
  49    }
───────┴────────────────────────────────────────────────────────────────────────