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.

Convirtiendo un formato de fecha y hora en otro en Java.

Tengo una situación en la que necesito convertir un formato de fecha y hora de Java en otro, pero he estado teniendo muchos problemas para hacerlo. He estado buscando soluciones durante mucho tiempo y he probado muchas cosas que simplemente no han funcionado, pero estoy desesperado :(.

Tengo que convertir de
yyyy-MM-dd’T’HH:mm:ss
a
MM/dd/yyyy HH:mm:ss

Esto es lo último que he intentado, pero lamentablemente no tiene ningún efecto en la transformación del patrón:

private Instant convertInstantFormat(Instant incomingDate) {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(AUTH_DATE_PATTERN)
        .withZone(ZoneId.systemDefault());
    return Instant.parse(formatter.format(incomingDate));
}

Donde

AUTH_DATE_PATTERN = "MM/dd/yyyy HH:mm:ss";

incomingDate = 2021-10-22T06:39:13Z
y outgoing date = 2021-10-22T06:39:13Z

Estoy seguro de que esto probablemente sea el intento más ingenuo.
He intentado estandarizar el formato de fecha y luego reformatearlo, pero no funciona.

Estoy un poco desanimado.
Como siempre, cualquier ayuda de esta increíble comunidad es tremendamente apreciada!


ACTUALIZACIÓN


Solo quería señalar que la entrada y salida de este método son del tipo “Instant”.
Mis disculpas por no dejarlo claro inicialmente.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para convertir de yyyy-MM-dd'T'HH:mm:ss al formato MM/dd/yyyy HH:mm:ss en Java, puedes utilizar la clase DateTimeFormatter del paquete java.time. Aquí tienes un ejemplo de código que debería funcionar para ti:

    private String convertDateFormat(String inputDateStr) {
        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss");
        LocalDateTime dateTime = LocalDateTime.parse(inputDateStr, inputFormatter);
        return dateTime.format(outputFormatter);
    }
    

    Aquí, inputDateStr es la cadena en formato yyyy-MM-dd'T'HH:mm:ss que deseas convertir al formato MM/dd/yyyy HH:mm:ss. El método utiliza dos objetos DateTimeFormatterinputFormatter para analizar la cadena de entrada en un objeto LocalDateTime, y outputFormatter para formatear el objeto LocalDateTime en una cadena en el formato de salida deseado.

    Ten en cuenta que el método convertDateFormat devuelve una cadena (String), no una instancia (Instant). Si necesitas devolver un objeto Instant en su lugar, puedes modificar el método para convertir el objeto LocalDateTime en un Instant utilizando el método atZone antes de devolverlo.

    Aquí tienes el fragmento de código actualizado:

    private Instant convertDateFormat(String inputDateStr) {
        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
        LocalDateTime dateTime = LocalDateTime.parse(inputDateStr, inputFormatter);
        return dateTime.atZone(ZoneId.systemDefault()).toInstant();
    }
    

    Este método toma la cadena de entrada en formato yyyy-MM-dd'T'HH:mm:ss y la convierte en un objeto Instant en la zona horaria del sistema por defecto.

Comments are closed.