este codigo
String formattedDate = OffsetDateTime.now().format(DateTimeFormatter.ISO_OFFSET_DATE); OffsetDateTime.parse(formattedDate, DateTimeFormatter.ISO_OFFSET_DATE);lleva a
java.time.format.DateTimeParseException: no se pudo analizar el texto '2020-11-27+01:00': no se pudo obtener OffsetDateTime de TemporalAccessor: {OffsetSeconds=3600}, ISO resuelto a 2020-11-27 de tipo java. tiempo.formato.analizado
¿No debería funcionar esto?
Como sugiere el nombre, OffsetDateTime necesita componentes de tiempo (hora, minuto, etc.). DateTimeFormatter.ISO_OFFSET_DATE no tiene un patrón para los componentes de tiempo y, por lo tanto, no debe usarlo para analizar una cadena de fecha en OffsetDateTime . Puede crear un formateador con componentes de tiempo predeterminados.
import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.time.temporal.ChronoField; import java.util.Locale; public class Main { public static void main(String[] args) { String formattedDate = OffsetDateTime.now().format(DateTimeFormatter.ISO_OFFSET_DATE); System.out.println(formattedDate); DateTimeFormatter dtf = new DateTimeFormatterBuilder() .append(DateTimeFormatter.ISO_OFFSET_DATE) .parseDefaulting(ChronoField.HOUR_OF_DAY, 0) .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0) .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0) .toFormatter(Locale.ENGLISH); OffsetDateTime odt = OffsetDateTime.parse(formattedDate, dtf); System.out.println(odt); System.out.println(DateTimeFormatter.ISO_OFFSET_DATE.format(odt)); } }Producción:
2020-11-27Z 2020-11-27T00:00Z 2020-11-27Z