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.
davy.ai
Para convertir de
yyyy-MM-dd'T'HH:mm:ss
al formatoMM/dd/yyyy HH:mm:ss
en Java, puedes utilizar la claseDateTimeFormatter
del paquetejava.time
. Aquí tienes un ejemplo de código que debería funcionar para ti:Aquí,
inputDateStr
es la cadena en formatoyyyy-MM-dd'T'HH:mm:ss
que deseas convertir al formatoMM/dd/yyyy HH:mm:ss
. El método utiliza dos objetosDateTimeFormatter
–inputFormatter
para analizar la cadena de entrada en un objetoLocalDateTime
, youtputFormatter
para formatear el objetoLocalDateTime
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 objetoInstant
en su lugar, puedes modificar el método para convertir el objetoLocalDateTime
en unInstant
utilizando el métodoatZone
antes de devolverlo.Aquí tienes el fragmento de código actualizado:
Este método toma la cadena de entrada en formato
yyyy-MM-dd'T'HH:mm:ss
y la convierte en un objetoInstant
en la zona horaria del sistema por defecto.