Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

POSTMAN đang trả về các trường ngày với các giá trị đã thay đổi

Postman không thêm bất cứ thứ gì vào JSON phản hồi từ máy chủ. Bản trình bày về ngày cụ thể này được tạo bởi máy chủ và đã xảy ra sự cố. Đầu tiên, chúng ta nên bắt đầu từ đó bạn không nên sử dụng java.util.Date vì bạn sử dụng Java8 . Có java.time gói có sẵn và bạn nên sử dụng nó để đại diện cho thời gian.

toString phương thức từ Date lớp sử dụng múi giờ của hệ thống mặc định để in ngày tháng và bạn không nên sử dụng nó. java.time.LocalDateTime sẽ làm việc cho bạn.

Có thể dịch vụ phụ trợ của bạn sử dụng một số thư viện để tạo JSON phản ứng. Ví dụ:Jackson . Cấu hình của nó có thể bị sai, đây là lý do tại sao bạn thấy sai ngày. Xem mã bên dưới:

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

Mã trên với múi giờ được đặt thành GMT bản in:

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

Nhưng khi chúng tôi thay đổi múi giờ thành Etc/GMT-3 , nó in:

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

Bạn nên kiểm tra những gì được sử dụng để tạo JSON trong trường hợp của bạn và định cấu hình đúng múi giờ. Lưu ý, điều đó cho initialDate chúng tôi không thấy hành vi này vì chúng tôi đã sử dụng java.time.LocalDateTime lớp thay vì Date .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết hợp các khoảng thời gian hiệu lực ngày liên tiếp với nhau

  2. Tôi có nên sử dụng JDBC getNString () thay vì getString () không?

  3. Cách thay đổi định dạng ngày trong phiên Oracle của bạn

  4. Làm cách nào để thêm số 0 đứng đầu trong một số trong truy vấn SQL của Oracle?

  5. ORA-30926:không thể có được một tập hợp các hàng ổn định trong các bảng nguồn