Saltar al contenido

Formato Java aaaa-MM-dd’T’HH:mm:ss.SSSz a aaaa-mm-dd HH:mm:ss

Después de consultar con especialistas en este tema, programadores de diversas áreas y maestros dimos con la respuesta a la cuestión y la dejamos plasmada en este post.

Solución:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
SimpleDateFormat output = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse(time);
String formattedTime = output.format(d);

Esto funciona. Tienes que usar dos SimpleDateFormats, uno para entrada y otro para salida, pero te dará justo lo que quieres.

java.tiempo

Tenemos nueva tecnología para este problema: el marco java.time integrado en Java 8 y versiones posteriores.

Tu aportación string está en el formato estándar ISO 8601. Ese estándar se usa de forma predeterminada en las clases java.time para analizar/generar representaciones textuales de valores de fecha y hora.

OffsetDateTime odt = OffsetDateTime.parse( "2012-10-01T09:45:00.000+02:00" );

Su pregunta sugiere que desea truncar a un segundo completo.

OffsetDateTime odtTruncatedToWholeSecond = odt.truncatedTo( ChronoUnit.SECONDS );

Parece que desea omitir la información de desplazamiento y zona horaria. El formateador predefinido DateTimeFormatter.ISO_LOCAL_DATE_TIME hace eso.

Y aparentemente desea usar un espacio en el medio en lugar del estándar T. Podrías definir tu propio formateador para esto, pero yo solo haría un string Manipulación para reemplazar el T con un ESPACIO.

String output = odtTruncatedToWholeSecond.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ).replace( "T" , " " );

Simplemente manipulaciones de cadenas

Como sugieren los comentarios sobre la Pregunta, estrictamente hablando, puede lograr su objetivo trabajando solo con cadenas y sin convertir a ningún objeto de fecha y hora. Pero proporciono esta Respuesta aquí asumiendo que puede tener otra lógica comercial para trabajar con estos valores de fecha y hora.


Tabla de tipos de fecha y hora en Java, tanto modernos como heredados


Sobre java.tiempo

los java.tiempo framework está integrado en Java 8 y versiones posteriores. Estas clases reemplazan a las antiguas y problemáticas clases heredadas de fecha y hora, como java.util.Date, Calendar& SimpleDateFormat.

los Joda-Tiempo El proyecto, ahora en modo de mantenimiento, aconseja la migración a las clases java.time.

Para obtener más información, consulte la Tutorial de oráculo. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.

puedes intercambiar java.tiempo objetos directamente con su base de datos. Utilice un controlador JDBC compatible con JDBC 4.2 o posterior. No hay necesidad de cuerdas, no hay necesidad de java.sql.* clases

¿Dónde obtener las clases java.time?

  • Java SE 8, Java SE 9y después
    • Incorporado.
    • Parte de la API de Java estándar con una implementación integrada.
    • Java 9 agrega algunas características y correcciones menores.
  • Java SE 6 y Java SE 7
    • Gran parte de la funcionalidad de java.time está adaptada a Java 6 y 7 en ThreeTen-Backport.
  • Androide
    • Versiones posteriores de implementaciones de paquetes de Android de las clases java.time.
    • Para Android anterior, el TresDiezABP el proyecto se adapta ThreeTen-Backport (mencionado anteriormente). Ver Cómo usar ThreeTenABP….

Tabla de qué biblioteca java.time usar con qué versión de Java o Android

los ThreeTen-Extra proyecto extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval, YearWeek, YearQuartery más.

Gooye, si es posible usar Joda Time en su proyecto, entonces este código funciona para mí:

String dateStr = "2012-10-01T09:45:00.000+02:00";
String customFormat = "yyyy-MM-dd HH:mm:ss";

DateTimeFormatter dtf = ISODateTimeFormat.dateTime();
LocalDateTime parsedDate = dtf.parseLocalDateTime(dateStr);

String dateWithCustomFormat = parsedDate.toString(DateTimeFormat.forPattern(customFormat));
System.out.println(dateWithCustomFormat);

Te mostramos las reseñas y valoraciones de los lectores

Si crees que ha sido de utilidad nuestro post, nos gustaría que lo compartas con el resto desarrolladores y nos ayudes a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *