Строка времени в календарь

#spring #datetime #jquery-plugins #timepicker

#весна #дата и время #jquery-плагины #указатель времени

Вопрос:

Я использую плагин jquery timepicker, и он работает нормально. Я могу выбрать время и отправить свою форму. Я использую spring MVC 3.0, и проблема возникает, когда я пытаюсь проанализировать строку, которая представляет время, как карлендар java.

Я читал об этом преобразовании даты и времени, http://www.odi.ch/prog/design/datetime.php , и это кажется довольно сложным. Может кто-нибудь, пожалуйста, дать какой-нибудь совет. Вот мой код, который зависит от spring.

 @RequestMapping(value = "scheduleadd", method = RequestMethod.POST)
public String scheduleadd(  @Valid Schedule schedule, BindingResult bindingResult,
                            @RequestParam("startdate") @org.springframework.format.annotation.DateTimeFormat(iso=ISO.DATE) java.util.Calendar startdate,
                            @RequestParam("enddate") @org.springframework.format.annotation.DateTimeFormat(iso=ISO.DATE) java.util.Calendar enddate,
                            @RequestParam("starttime") @org.springframework.format.annotation.DateTimeFormat(iso=ISO.NONE) java.util.Calendar starttime,
                            @RequestParam("endtime") @org.springframework.format.annotation.DateTimeFormat(iso=ISO.NONE) java.util.Calendar endtime,
                            @RequestParam("moduleInstanceId") Long mId, Model uiModel, HttpServletRequest httpServletRequest) { //my stuff goes here}
 

Как вы можете видеть, я пытаюсь проанализировать строку типа «09:30» как java Carlendar. Нужна ли мне часть даты? Как мне указать часть даты?

Ответ №1:

Используйте pattern атрибут @DateTimeFormat, чтобы указать, что поля «time» не являются полностью сформированными датами ISO, а просто временем; например:

 ...
@RequestParam("starttime") @DateTimeFormat(pattern="hh:mm") Calendar starttime,
@RequestParam("endtime") @DateTimeFormat(pattern="hh:mm") Calendar endtime,
...
 

И в вашем scheduleadd() методе объедините Calendar поля, чтобы получить полностью сформированное datetime:

 startdate.set(Calendar.HOUR_OF_DAY, starttime.get(Calendar.HOUR_OF_DAY));
startdate.set(Calendar.MINUTE, starttime.get(Calendar.MINUTE));
...