Postman
fügt JSON
nichts hinzu Antwort von einem Server. Diese Darstellung des angegebenen Datums wurde vom Server generiert und es liegt ein Problem vor. Zunächst sollten wir davon ausgehen, dass Sie java.util.Date
nicht verwenden sollten da Sie Java8
verwenden . Es gibt java.time
Paket verfügbar und Sie sollten es verwenden, um eine Zeit darzustellen.
toString
Methode von Date
Die Klasse verwendet die Zeitzone des Standardsystems, um das Datum zu drucken, und Sie sollten sie nicht verwenden. java.time.LocalDateTime
sollte für Sie funktionieren.
Wahrscheinlich verwendet Ihr Back-End-Dienst einige Bibliotheken, um JSON
zu generieren Antwort. Beispiel:Jackson
. Die Konfiguration könnte falsch sein, deshalb sehen Sie falsche Daten. Siehe folgenden Code:
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;
}
Obiger Code mit auf GMT
eingestellter Zeitzone druckt:
{
"initialDate" : "2019-03-07T00:00:00",
"finalDate" : "2019-09-07T23:59:59"
}
Aber wenn wir die Zeitzone auf Etc/GMT-3
ändern , es druckt:
{
"initialDate" : "2019-03-07T00:00:00",
"finalDate" : "2019-09-08T02:59:59"
}
Sie sollten überprüfen, was zum Generieren von JSON
verwendet wird in Ihrem Fall und konfigurieren Sie die Zeitzone richtig. Beachten Sie, dass für initialDate
Wir sehen dieses Verhalten nicht, da wir java.time.LocalDateTime
verwendet haben Klasse statt Date
.