Как конфертировать из в String в LocalTimeZone? - PullRequest
0 голосов
/ 07 декабря 2018

Я занимаюсь разработкой приложения и у меня возникает проблема при преобразовании из String в LocalTimeZone.Я показал проблему с двумя скриншотами ниже для лучшего понимания и понимания:

enter image description here enter image description here Чем класс Task определяет, кто определяет модель

@Entity
@Table(name = "task", schema = "public")
public class Task {

 @Id
 @GeneratedValue
 private Long id;

 @NotEmpty
 private String date;

 @NotEmpty
 private LocalDateTime startTime;

 @NotEmpty
 private LocalDateTime stopTime;

 @NotEmpty
 @Column(length=1000)
 private String description;

 @ManyToOne
 @JoinColumn(name="USER_EMAIL")
 private User user;

 public Long getId() {
    return id;
 }
 public void setId(Long id) {
    this.id = id;
 }
 public String getDate() {
    return date;
 }
 public void setDate(String date) {
    this.date = date;
 }
 public LocalDateTime getStartTime() {
    return startTime;
 }
 public void setStartTime(LocalDateTime startTime) {
    this.startTime = startTime;
 }
 public LocalDateTime getStopTime() {
    return stopTime;
 }
 public void setStopTime(LocalDateTime stopTime) {
    this.stopTime = stopTime;
 }
 public String getDescription() {
    return description;
 }
 public void setDescription(String description) {
    this.description = description;
 }
 public User getUser() {
    return user;
 }
 public void setUser(User user) {
    this.user = user;
 }
 public Task(String date, LocalDateTime startTime, LocalDateTime stopTime, String description, User user) {
    this.date = date;
    this.startTime = startTime;
    this.stopTime = stopTime;
    this.description = description;
    this.user = user;
 }

 public Task(String date, LocalDateTime startTime, LocalDateTime stopTime, String description) {
    this.date = date;
    this.startTime = startTime;
    this.stopTime = stopTime;
    this.description = description;
 }

 public Task() {
 }
}

Вот функции, которые добавляют новые задачи в базу данных

@GetMapping("/addTask")
public String taskForm(String email, Model model, HttpSession session) {
    session.setAttribute("email", email);
    model.addAttribute("task", new Task());
    return "views/taskForm";
}
@PostMapping("/addTask")
public String addTask(@Valid Task task, BindingResult bindingResult, HttpSession session) {
    if(bindingResult.hasErrors()){
        return "views/taskForm";
    }
    String email = (String) session.getAttribute("email");
    taskService.addTask(task, userService.findOne(email));
    return "redirect:/users";
}

А ниже находится функция в другом классе, которая необходима для этой задачи, котораяЯ спрашиваю.

@Scheduled(cron = "0-59 * * * * ?")
public void cronTime() {
    logger.info("Cron Task : Execution Time - {}", dateTimeFormatter.format(LocalDateTime.now()));
    System.out.println("Cron job is executed again!");
    List<LocalDateTime> a = taskService.stopTimeTasks();
    for (LocalDateTime tmp : a) {
        if (LocalDateTime.now().isAfter(tmp)) {
            taskService.deleteAll();
        }
    }
}

Пожалуйста, помогите мне, если у вас есть информация для этой ошибки.Заранее спасибо!

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете использовать DateTimeFormatter следующим образом:

LocalDate localDate = LocalDate.from(DateTimeFormatter.ofPattern("dd/MM/yyyy").parse("10/11/2018");

LocalTime localTime = LocalTime.from(DateTimeFormatter.ofPattern("HH:mm").parse("09:00");

LocalDateTime locaDateTime = LocalDateTime.of(localDate, localTime);

Я бы порекомендовал вам изменить модель домена и принять LocalDateTime для startTime и stopTime с их датами.На этом этапе вы сохраните «10/11/2018 09:00» и «10/11/2018 18:00», будет проще применить SQL-фильтр между датами.Я вижу ненужную колонку с датой.

...