Objeto Fecha en el esquema JSON.
Tengo mi esquema JSON para createdAt
como:
{
"title": "detalles",
"definitions": {
"dateTime": {
"type": "string",
"format": "date-time"
},
"propiedades" : {
"createdAt": { "$ref": "#/definitions/dateTime" }
}
}
y cuando intento crear el objeto:
Details detalles = ImmutableDetails.builder()
.createdAt(new SimpleDateFormat("yyyy-MM-dd& #39;T & #39;HH: mm: ss.SSS 'Z '")
.parse("2021-11-30T00:22:11.454Z"))
.build();
Obtengo el error:
createDate: [30 de noviembre de 2021, 0:22:11 a. m.] no es una fecha-hora válida.
Se esperaba [yyyy-MM-dd'T'HH:mm:ssZ, yyyy-MM-dd'T' HH: mm: ss. [0-9] {1,9} Z,
yyyy-MM-dd & #39; T & # 39; HH: mm: ss [+-] HH: mm, yyyy-MM-dd & # 39; T & # 39;
HH: mm: ss. [0-9] {1,9} [+-] HH: mm]
¿Cómo especifico mi esquema JSON para aceptar un objeto java.util.Date
?
davy.ai
Para especificar el esquema JSON que acepte objetos
java.util.Date
, puede modificar su esquema agregando la palabra claveformat
a la definición dedateTime
, como se muestra a continuación:Aquí,
"format": "java-date-time"
especifica que la cadenadateTime
debe estar en el formato predeterminado utilizado por el objetojava.util.Date
.Luego, en su código Java, puede analizar la cadena de fecha utilizando la clase
java.time.LocalDateTime
y convertirla en un objetojava.util.Date
de la siguiente manera:Aquí, se utiliza
LocalDateTime.parse
para analizar la cadena de fecha yDate.from
para convertir el objetoLocalDateTime
resultante en un objetojava.util.Date
. Se utiliza el métodoatZone
para establecer la zona horaria en UTC, ytoInstant
se utiliza para obtener una instantánea del objetoLocalDateTime
.