Postman
não adiciona nada ao JSON
resposta de um servidor. Esta representação de determinada data foi gerada pelo servidor e há um problema. Em primeiro lugar, devemos começar que você não deve usar java.util.Date
já que você usa Java8
. Existe java.time
pacote disponível e você deve usá-lo para representar um tempo. toString
método de Date
class usa o fuso horário padrão do sistema para imprimir a data e você não deve usá-lo. java.time.LocalDateTime
deve funcionar para você. Provavelmente seu serviço de back-end usa algumas bibliotecas para gerar
JSON
resposta. Por exemplo, Jackson
. Sua configuração pode estar errada, é por isso que você vê datas erradas. Veja abaixo o código: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;
}
Código acima com fuso horário definido como
GMT
imprime:{
"initialDate" : "2019-03-07T00:00:00",
"finalDate" : "2019-09-07T23:59:59"
}
Mas quando alteramos o fuso horário para
Etc/GMT-3
, imprime:{
"initialDate" : "2019-03-07T00:00:00",
"finalDate" : "2019-09-08T02:59:59"
}
Você deve verificar o que é usado para gerar
JSON
no seu caso e configure o fuso horário corretamente. Observe que para initialDate
não vemos esse comportamento, pois usamos java.time.LocalDateTime
classe em vez de Date
.