Niedawno przeniosłem się na Java 8, aby, mam nadzieję, łatwiej było radzić sobie z lokalnymi i strefowymi czasami.Nie można uzyskać ZonedDateTime z TemporalAccessor za pomocą DateTimeFormatter i ZonedDateTime w Javie 8
Mam jednak do czynienia, moim zdaniem, z prostym problemem podczas analizowania prostej daty.
public static ZonedDateTime convertirAFecha(String fecha) throws Exception {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
ConstantesFechas.FORMATO_DIA).withZone(
obtenerZonaHorariaServidor());
ZonedDateTime resultado = ZonedDateTime.parse(fecha, formatter);
return resultado;
}
W moim przypadku:
- Fecha jest '15/06/2014'
- ConstantesFechas.FORMATO_DIA jest 'dd/mm/rrrr'
- obtenerZonaHorariaServidor zwraca ZoneId.systemDefault()
To jest prosty przykład. Jednak w tej analizie wyjątek jest następujący:
java.time.format.DateTimeParseException: Text '15/06/2014' could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {},ISO resolved to 2014-06-15 of type java.time.format.Parsed
Jakieś wskazówki? Próbowałem różnych kombinacji parsowania i używania TemporalAccesor, ale bez żadnego szczęścia do tej pory.
poważaniem
Niezły chwyt - choć wierzę, że PO będzie nadal trzeba zapewnić czas na być w stanie przeanalizować dane wejściowe w ZonedDateTime. – assylias
@assylias Yep, OP powinien rozszerzyć wzór przynajmniej na część czasu lub wybrać sugestię. Może to być również zależne od łagodnej konfiguracji parsowania itp. Nie jestem w stanie przetestować tych szczegółów za pomocą Java-8 w moim bieżącym miejscu. –
Lepsze łącze do raportu o błędach to https://bugs.openjdk.java.net/browse/JDK-8033662 – JodaStephen