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
の代わりにクラス 。