OffsetDateTime toString () devuelven diferente formato de cadena de fecha

Consorcio inactivo :

Tengo la fecha en este formato yyyy-MM-dd'T'HH:mm:ss'Z', pero mientras estoy usando este análisis OffsetDateTime.parse(date);se devuelve la cadena por eliminaciónseconds

Lógica: Obtener el día de la fecha, si es Saturdayo Sundaycambio de día para el lunes y devuelve la cadena de fecha

String date = "2018-12-30T06:00:00Z";

System.out.println(date);

try {
    OffsetDateTime dateTime = OffsetDateTime.parse(date);

    System.out.println(dateTime);           //2018-12-30T06:00Z

    DayOfWeek day = dateTime.getDayOfWeek();
    // check if price change  date is Sunday or Saturday and change it to Monday
    if (day.equals(DayOfWeek.SATURDAY) || day.equals(DayOfWeek.SUNDAY)) {

        String finalDateTime = dateTime.with(TemporalAdjusters.next(DayOfWeek.MONDAY)).toString();
         System.out.println(finalDateTime);      //2018-12-31T06:00Z
    }else {
        System.out.println(date);
    }
    }catch(Exception ex) {
        System.out.println(ex);
        System.out.println(date);
    }   

Tengo que devolver misma cadena como formato de entrada yyyy-MM-dd'T'HH:mm:ss'Z'

Charles Dowbecki:

Según OffsetDateTime.toString()javadoc método se utiliza el formato más breve posible para el valor mientras que las partes omitidas están implícitas a ser cero. El formato más breve posible para 2018-12-30T06:00:00Zes uuuu-MM-dd'T'HH:mmXXXXXasí que los segundos y los nanos se omiten:

La salida será uno de los siguientes ISO-8601 formatos:

  • uuuu-MM-dd'T'HH: mmXXXXX
  • uuuu-MM-dd'T'HH: mm: ssXXXXX
  • uuuu-MM-dd'T'HH: mm: ss.SSSXXXXX
  • uuuu-MM-dd'T'HH: mm: ss.SSSSSSXXXXX
  • uuuu-MM-dd'T'HH: mm: ss.SSSSSSSSSXXXXX

El formato utilizado será el más corto que da salida el valor total de las veces en que las partes omitidas están implícitas a ser cero.

Si necesita un formato preciso utilizar una DateTimeFormatterinstancia con el patrón específico para dar salida a la fecha:

String date = "2018-12-30T06:00:00Z";
OffsetDateTime dt = OffsetDateTime.parse(date);
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'");
System.out.println(fmt.format(dt));

Supongo que te gusta

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