es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para especificar el esquema JSON que acepte objetos java.util.Date, puede modificar su esquema agregando la palabra clave format a la definición de dateTime, como se muestra a continuación:

    {
      "title": "details",
      "definitions": {
        "dateTime": {
          "type": "string",
          "format": "java-date-time"
        },
        "properties": {
          "createdAt": { "$ref": "#/definitions/dateTime" }
        }
      }
    }
    

    Aquí, "format": "java-date-time" especifica que la cadena dateTime debe estar en el formato predeterminado utilizado por el objeto java.util.Date.

    Luego, en su código Java, puede analizar la cadena de fecha utilizando la clase java.time.LocalDateTime y convertirla en un objeto java.util.Date de la siguiente manera:

    Details details = ImmutableDetails.builder()
                 .createdAt(Date.from(LocalDateTime.parse("2021-11-30T00:22:11.454").atZone(ZoneOffset.UTC).toInstant()))
                 .build();
    

    Aquí, se utiliza LocalDateTime.parse para analizar la cadena de fecha y Date.from para convertir el objeto LocalDateTime resultante en un objeto java.util.Date. Se utiliza el método atZone para establecer la zona horaria en UTC, y toInstant se utiliza para obtener una instantánea del objeto LocalDateTime.

Comments are closed.