in

Objeto Java String to Date con el formato «aaaa-mm-dd HH: mm: ss»

apple touch icon@2
LocalDateTime.parse( 
    "2012-07-10 14:58:00.000000".replace( " " , "T" )  
)

Está intentando comprimir un valor con microsegundos (seis dígitos decimales) en un tipo de datos que solo puede tener una resolución de milisegundos (tres dígitos decimales). Eso es imposible.

En su lugar, utilice un tipo de datos con una resolución lo suficientemente fina. los java.time las clases utilizan una resolución de nanosegundos (nueve dígitos decimales).

Está intentando poner un valor que carece de compensación de UTC o zona horaria en un tipo de datos (Date) que solo representa valores en UTC. Por lo tanto, está agregando información (compensación UTC) no prevista por la entrada.

En su lugar, utilice un tipo de datos adecuado. Específicamente, java.time.LocalDateTime.

Otras respuestas y comentarios explican correctamente que los códigos de patrón de formato distinguen entre mayúsculas y minúsculas. Entonces MM y mm tienen diferentes efectos.

Las antiguas y problemáticas clases de fecha y hora incluidas con las primeras versiones de Java ahora son heredadas, suplantadas por las clases java.time integradas en Java 8 y posteriores.

Sus cadenas de entrada casi cumplen con los formatos estándar ISO 8601. Reemplace el ESPACIO en el medio con un T para cumplir plenamente.

Las clases java.time utilizan los formatos estándar de forma predeterminada al analizar / generar cadenas. Por tanto, no es necesario especificar un patrón de formato.

y necesito que el objeto de fecha resultante tenga el mismo formato.

No, los objetos de fecha y hora no tienen «formato». No combine objetos de fecha y hora con simples cadenas. Las cadenas son entradas y salidas de los objetos. Los objetos mantienen sus propias representaciones internas de la información de fecha y hora, cuyos detalles son irrelevantes para nosotros como programadores de llamadas.

Su entrada carece de cualquier indicador de compensación de UTC o zona problemática. Así que analizamos como LocalDateTime objetos que carecen de esos conceptos.

String input = "2012-07-10 14:58:00.000000".replace( " " , "T" ) ;
LocalDateTime ldt = LocalDateTime.parse( input ) ;

Para generar una cadena que represente el valor de su LocalDateTime:

  • Llama toString para obtener una cadena en formato estándar ISO 8601.
  • Usar DateTimeFormatter para producir cadenas en formatos personalizados o en formatos localizados automáticamente.

Busque Stack Overflow para obtener más información, ya que estos temas ya se han tratado muchas veces.

A LocalDateTime lo hace no representan un punto exacto en la línea de tiempo.

Para determinar un momento real, asigne una zona horaria. Por ejemplo, el mediodía en Calcuta, India, llega mucho antes del mediodía en París, Francia. El mediodía sin una zona horaria podría estar sucediendo en cualquier momento en un rango de aproximadamente 26 a 27 horas.

ZoneId z = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = ldt.atZone( z ) ;

los java.time framework está integrado en Java 8 y versiones posteriores. Estas clases suplantan al viejo problemático legado clases de fecha y hora como java.util.Date, CalendarY SimpleDateFormat.

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

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

Puedes intercambiar java.time objetos directamente con su base de datos. Utilizar una Controlador JDBC conforme con JDBC 4.2 o después. Sin necesidad de cuerdas, sin necesidad de java.sql.* clases. Compatibilidad con Hibernate 5 y JPA 2.2 java.time.

¿Dónde obtener las clases java.time?

Deja una respuesta

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

Configuración de Apache para PHP

KmyiU6eBY3jWFHVN2W4N7g 1200 80

¿Cuánto tiempo se tarda en vencer a Star Wars Jedi: Fallen Order?