我正在开发一个应用程序,给我一个从String转换为LocalTimeZone的问题。我通过下面的两个屏幕快照展示了该问题,以便更好地了解和理解:
的是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();
}
}
}
如果您有此错误的信息,请帮助我。 预先感谢!
答案 0 :(得分:0)
您可以按以下方式使用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);
我建议您更改域模型,并为LocalTime和startTime及其日期接受LocalDateTime。此时您将保存“ 10/11/2018 09:00”和“ 10/11/2018 18:00”,在日期之间应用sql过滤器将更加容易。我看到不必要的日期列。