Я пытаюсь написать метод запроса контроллера, который принимает параметр даты, который отправляется в виде строки даты и времени в формате iso. Это выглядит например, вы можете указать формат вручную, аннотируя параметр метода с помощью @DateTimeFormat(pattern="yyyy-MM-dd")
, но я хочу использовать настройку iso
. т.е. @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
. Используя формат даты и времени ISO, я даже не могу заставить его проанализировать дату примера в документации. Мне интересно, если я делаю что-то неправильно.
Вот мой класс контроллера:
@RestController
public class DateController {
@RequestMapping(path = "/echoIsoDate", method = RequestMethod.GET)
public ResponseEntity<String> echoIsoDate(@RequestParam("date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Date date){
return new ResponseEntity<>(date.toString(), HttpStatus.OK);
}
@RequestMapping(path = "/echoDumbDate", method = RequestMethod.GET)
public ResponseEntity<String> echoDumbDate(@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date){
return new ResponseEntity<>(date.toString(), HttpStatus.OK);
}
}
Когда я пытаюсь вызвать этот контроллер с датой, которую я действительно хочу проанализировать, он не работает:
http://localhost:8080/echoIsoDate?date=2015-12-30T00:00:00.000Z
Когда я пытаюсь вызвать этот контроллер с датой примера из документации не работает:
http://localhost:8080/echoIsoDate?date=2000-10-31%2001:30:00.000-05:00
Второй метод контроллера работает. например, вызов http://localhost:8080/echoDumbDate?date=1970-01-01
возвращает Thu Jan 01 00:00:00 CST 1970
(но тогда он находится в CST, который предположительно находится в часовом поясе моей системы).
Вопросы:
- Что я делаю не так в
echoIsoDate()
? Или есть ошибка в Spring? - Для
echoDumbDate()
есть ли способ указать часовой пояс, который я хочу, чтобы он всегда использовал UTC?