OffsetDateTimeのtoString()の戻り別の形式の日付文字列

デッドプール :

私は、この形式で日付を持っているyyyy-MM-dd'T'HH:mm:ss'Z'が、私は使用してこれを解析していながら、OffsetDateTime.parse(date);それを排除することによって、文字列を返します。seconds

ロジック:それはある場合、日付から日を取得SaturdayまたはSunday変更日月曜日に、日付文字列を返します

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);
    }   

私は、同じ入力フォーマットとして文字列を返す必要があります yyyy-MM-dd'T'HH:mm:ss'Z'

チャールズDowbecki:

どおりOffsetDateTime.toString()省略部分がゼロであることが暗示されている間、メソッドのJavadoc値の最短のフォーマットが使用されます。以下のための最短のフォーマットが2018-12-30T06:00:00Zありuuuu-MM-dd'T'HH:mmXXXXX秒とnanos値がスキップされて:

出力は次の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));

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=239683&siteId=1