Ich versuche, eine Controller-Request-Methode zu schreiben, die einen Date-Parameter akzeptiert, der als iso-formatierter Date-Time-String gesendet wird. It looks like you can specify a format manually, den Methodenparameter mit @DateTimeFormat(pattern="yyyy-MM-dd")
annotieren, aber ich möchte die iso
Einstellung verwenden. I.e. @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
. Mit dem ISO-Datum-Zeit-Format kann ich es nicht einmal dazu bringen, das Beispieldatum in der Dokumentation zu analysieren. Ich frage mich, ob ich etwas falsch mache.Wie mache ich eine Spring-Boot-Request-Methode akzeptieren eine ISO-formatierte Datumsparam?
Hier ist meine Controller-Klasse:
@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);
}
}
Wenn ich versuche, diesen Controller mit dem Datum zu nennen Ich mag es tatsächlich analysieren funktioniert nicht:
http://localhost:8080/echoIsoDate?date=2015-12-30T00:00:00.000Z
Als ich zu nennen versuchen dieser Controller with the example date from the documentation es funktioniert nicht:
http://localhost:8080/echoIsoDate?date=2000-10-31%2001:30:00.000-05:00
Der zweite Controller-Methode doe s Arbeit. ZB Aufruf http://localhost:8080/echoDumbDate?date=1970-01-01
gibt Thu Jan 01 00:00:00 CST 1970
zurück (Aber dann ist es in CST, die vermutlich in meiner Systemzeitzone ist).
Fragen:
- Was bin ich in
echoIsoDate()
falsch? Oder gibt es im Frühjahr einen Fehler? - Für
echoDumbDate()
gibt es eine Möglichkeit, die gewünschte Zeitzone anzugeben, so dass es immer UTC verwendet?