OffsetDateTime toString() 返回不同格式的日期字符串

Dea*_*ool 4 java date

我有这种格式的日期yyyy-MM-dd'T'HH:mm:ss'Z',但是当我使用OffsetDateTime.parse(date);它解析它时,它通过消除返回字符串seconds

逻辑:从日期获取日期,如果是SaturdaySunday将日期更改为星期一并返回日期字符串

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);
    }   
Run Code Online (Sandbox Code Playgroud)

我需要以相同的输入格式返回字符串 yyyy-MM-dd'T'HH:mm:ss'Z'

Kar*_*cki 10

根据OffsetDateTime.toString()javadoc 方法,使用该值的最短格式,而省略部分隐含为零。尽可能短的格式2018-12-30T06:00:00Zuuuu-MM-dd'T'HH:mmXXXXX这样的秒和毫微秒跳过:

输出将是以下 ISO-8601 格式之一:

  • 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

所使用的格式将是输出完整时间值的最短格式,其中省略部分隐含为零。

如果您需要精确的格式,请使用DateTimeFormatter具有特定模式的实例来输出日期:

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));
Run Code Online (Sandbox Code Playgroud)