Analizar una cadena de fecha y hora en un objeto ZonedDateTime

YO :

Estoy tratando de analizar una cadena con una fecha y hora en una zona de tiempo conocido. Las cadenas tienen el siguiente formato:

2019-03-07 00:05:00-05:00

He intentado esto:

package com.example.test;

import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class Test {

    public static void main( String[] args ) {

        ZoneId myTimeZone = ZoneId.of("US/Eastern");

        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ssXX");

        ZonedDateTime zdt = ZonedDateTime.parse("2019-03-07 00:05:00-05:00", dateTimeFormatter.withZone(myTimeZone));

        System.out.println(zdt);

    }

}

Esta es la excepción lanzada:

Exception in thread "main" java.time.format.DateTimeParseException: Text '2019-03-07 00:05:00-05:00' could not be parsed at index 19
    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    at java.time.ZonedDateTime.parse(ZonedDateTime.java:597)
    at com.example.test.Test.main(Test.java:24)
C:\Users\user\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)

Estoy usando Java 1.8.0_191.

amseager:

Utilice este patrón: yyyy-MM-dd HH:mm:ssXXX

A partir de los documentos :

Desplazamiento X y X: ... Dos cartas salidas de la hora y los minutos, sin los dos puntos, como '0130'. Tres cartas salidas de la hora y los minutos, con dos puntos, como '01: 30'.

Así que si su cadena contiene una zona horaria en el interior del colon, se debe utilizar 3 "X-es".

Y mayúscula significa "basado semanas de años", no uno normal (y).

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=223058&siteId=1
Recomendado
Clasificación