sql >> データベース >  >> RDS >> Oracle

POSTMANは値が変更された日付フィールドを返します

    Postman JSONには何も追加されません サーバーからの応答。指定された日付のこの表現はサーバーによって生成されたものであり、問​​題があります。まず、java.util.Dateを使用しないことから始めます。 Java8を使用しているため 。 java.timeがあります パッケージが利用可能であり、時間を表すために使用する必要があります。

    toString Dateからのメソッド クラスはデフォルトのシステムのタイムゾーンを使用して日付を出力するため、使用しないでください。 java.time.LocalDateTime あなたのために働くはずです。

    おそらく、バックエンドサービスはいくつかのライブラリを使用してJSONを生成します 応答。たとえば、Jackson 。構成が間違っている可能性があります。これが、間違った日付が表示される理由です。以下のコードを参照してください:

    import com.fasterxml.jackson.annotation.JsonFormat;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.SerializationFeature;
    import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.ToString;
    
    import java.io.IOException;
    import java.time.LocalDateTime;
    import java.time.ZoneOffset;
    import java.util.Date;
    import java.util.TimeZone;
    
    public class JsonTimeApp {
        public static void main(String[] args) throws IOException {
            LocalDateTime initialDate = LocalDateTime.of(2019, 3, 7, 0, 0, 0);
            LocalDateTime finalDate = LocalDateTime.of(2019, 9, 7, 23, 59, 59);
    
            ObjectMapper mapper = new ObjectMapper();
            mapper.enable(SerializationFeature.INDENT_OUTPUT);
            mapper.registerModule(new JavaTimeModule());
            mapper.setTimeZone(TimeZone.getTimeZone("GMT"));
            // or mapper.setTimeZone(TimeZone.getTimeZone("Etc/GMT-3"));
    
            mapper.writeValue(System.out, new Period(initialDate, Date.from(finalDate.toInstant(ZoneOffset.UTC))));
        }
    }
    
    @Data
    @AllArgsConstructor
    @ToString
    class Period {
    
        @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
        private LocalDateTime initialDate;
    
        @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
        private Date finalDate;
    }
    

    タイムゾーンがGMTに設定された上記のコード プリント:

    {
      "initialDate" : "2019-03-07T00:00:00",
      "finalDate" : "2019-09-07T23:59:59"
    }
    

    ただし、タイムゾーンをEtc/GMT-3に変更すると 、印刷します:

    {
      "initialDate" : "2019-03-07T00:00:00",
      "finalDate" : "2019-09-08T02:59:59"
    }
    

    JSONの生成に何が使用されているかを確認する必要があります あなたの場合、適切なタイムゾーンを設定します。 initialDateの場合は注意してください java.time.LocalDateTimeを使用したため、この動作は見られません。 Dateの代わりにクラス 。



    1. エラー1366(HY000):文字列値が正しくありません:行1の列'comment'の'\ xF0 \ x9F \ x98 \ x9C'

    2. 複数のテーブルにまたがる大量のデータを取得し、クエリのループを回避する方法

    3. MySQLは計算でソートします

    4. SQLServerの既存のSQLServerテーブルから新しいテーブルをバックアップまたは作成する方法-SQLServer/TSQLチュートリアルパート105