Oracle
 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 generate उत्पन्न करने के लिए क्या उपयोग किया जाता है अपने मामले में और ठीक से समय क्षेत्र को कॉन्फ़िगर करें। ध्यान दें, कि initialDate . के लिए हम इस व्यवहार को नहीं देखते हैं क्योंकि हमने java.time.LocalDateTime . का उपयोग किया है 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. एक इकाई विशिष्ट अनुक्रम

  2. ऑरैकल पर डेटा डालने के बाद खाली टेबल पर इंडेक्स बनाने या यूनिक इंडेक्स बनाने के बाद डेटा इंसर्शन?

  3. ORA-00947 विश्व स्तर पर प्रकार घोषित करते समय पर्याप्त मान नहीं हैं

  4. समग्र कुंजी के साथ WHERE_IN क्वेरी?

  5. पीएल/एसक्यूएल के साथ ओरेकल निर्देशिका की सभी फाइलों को कैसे पढ़ें और बीएलओबी कॉलम अपडेट करें