Como analisar compensado com cólon usando DateTimeFormatter?

Seweryn Habdank-Provincial:

Eu tenho a seguinte seqüência: String timeStamp = "2020-01-31 12:13:14 +03:00". E eu tentei analisá-lo usando Java 8 DateTimeFormatter.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( format );
tmpTimestamp = ZonedDateTime.parse( timeStamp, formatter );

em que formaté um dos seguintes:

"yyyy-MM-dd' 'HH:mm:ss' 'Z",
"yyyy-MM-dd' 'HH:mm:ss' 'X",
"yyyy-MM-dd' 'HH:mm:ss' 'x",
"yyyy-MM-dd HH:mm:ss Z",
"yyyy-MM-dd HH:mm:ss X",
"yyyy-MM-dd HH:mm:ss x",

Nenhum está funcionando. Sempre eu tenho DateTimeParseExceptiontanto apontando para '+' ou ':' personagem em compensar substring "+03: 00"

De acordo com JavaDocs: Classe DateTimeFormatter "+03: 00" deve ser suportado por qualquer um: Z, Xe x.

Então a questão é como construir formatador string para analisá-lo?

Samuel Philipp:

Você deve usar os tempos X( yyyy-MM-dd HH:mm:ss XXX):

String timeStamp = "2020-01-31 12:13:14 +03:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss XXX");
ZonedDateTime tmpTimestamp = ZonedDateTime.parse(timeStamp, formatter);

A partir dos documentos :

Deslocamento X e x: Este formatos a compensação com base no número de cartas padrão.

Uma letra saídas apenas a hora, como '+01', a menos que o minuto é diferente de zero caso em que o minuto é também de saída, como '0130'.

Duas cartas produz a hora e os minutos, sem uma vírgula, como '0130'.

Três letras emite a hora e minuto, com um cólon, tais como '01: 30'.

Quatro cartas produz a hora e minuto e segundo opcional, sem uma vírgula, como '013015'.

Cinco cartas emite a hora e minuto e segundo opcional, com uma cólon, tais como '01: 30: 15'.

Seis ou mais letras joga IllegalArgumentException.

carta padrão de 'X' (em maiúsculas) output 'Z', quando o deslocamento para ser saída seria zero, ao passo que carta padrão 'x' (minúscula) output '00', '0000', ou '00 : 00' .

Alternativa você pode usar cinco letras ( XXXXX) e você também pode usar ZZZou ZZZZZem vez de XXXou XXXXX.

Acho que você gosta

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