Gần đây tôi đã chuyển sang Java 8, hy vọng, đối phó với thời gian địa phương và khoanh vùng dễ dàng hơn.Không thể lấy ZonedDateTime từ TemporalAccessor bằng cách sử dụng DateTimeFormatter và ZonedDateTime trong Java 8
Tuy nhiên, tôi đang đối mặt với một ý kiến đơn giản khi phân tích một ngày đơn giản.
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;
}
Trong trường hợp của tôi:
- fecha là '15/06/2014'
- ConstantesFechas.FORMATO_DIA là 'dd/MM/yyyy'
- obtenerZonaHorariaServidor trả ZoneId.systemDefault()
Vì vậy, đây là một ví dụ đơn giản. Tuy nhiên, phân tích cú pháp này ném ngoại lệ này:
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
Bất kỳ mẹo nào? Tôi đã cố gắng kết hợp khác nhau của phân tích cú pháp và sử dụng TemporalAccesor, nhưng không có bất kỳ may mắn cho đến nay.
Trân trọng
đẹp catch - mặc dù tôi tin rằng op vẫn sẽ cần phải cung cấp một thời gian để có thể phân tích cú pháp đầu vào thành ZonedDateTime. – assylias
@assylias Yep, OP nên mở rộng mẫu ít nhất cũng cho phần thời gian hoặc chọn đề xuất của bạn. Điều này cũng có thể phụ thuộc vào cấu hình phân tích cú pháp khoan dung, vv Thực ra không thể kiểm tra các chi tiết này với Java-8 ở vị trí hiện tại của tôi. –
Liên kết báo cáo lỗi tốt hơn là https://bugs.openjdk.java.net/browse/JDK-8033662 – JodaStephen