2017-07-14 12 views

उत्तर

8

LocalDateTime और java.sql.Date के बीच कोई सीधा सहसंबंध नहीं है, क्योंकि पूर्व-टाइमस्टैम्प है, और बाद में एक तिथि है।

वहाँ है, तथापि, LocalDate और java.sql.Date, और रूपांतरण के बीच एक रिश्ता इस तरह से किया जा सकता है:

LocalDate date = //your local date 
java.sql.Date sqlDate = java.sql.Date.valueOf(date) 

कौन सा किसी भी LocalDateTime के लिए आप निम्न कोड देता है:

LocalDateTime dateTime = // your ldt 
java.sql.Date sqlDate = java.sql.Date.valueOf(dateTime.toLocalDate()); 
11

@M. Prokhorov's answer is correct , मैं बस कुछ अंक जोड़ना चाहता हूँ।

java.sql.Date केवल दिन, महीना और वर्ष मान रखता है। समय मूल्य (घंटा, मिनट, सेकंड और मिलीसेकंड) are all set to zero। इसलिए, LocalDateTime को java.sql.Date में परिवर्तित करते समय, ये फ़ील्ड गुम हो जाते हैं।

आप एक-तरफ़ा रूपांतरण कर रहे हैं और उन क्षेत्रों को खोने कोई आपत्ति नहीं है, तो यह यह करने के लिए ठीक है:

LocalDateTime dt = // LocalDateTime value 
// convert to Date (time information is lost) 
java.sql.Date date = java.sql.Date.valueOf(dt.toLocalDate()); 

लेकिन अगर आप बाद में मूल LocalDateTime पुनर्स्थापित करना चाहते हैं, यह बेहतर है समय क्षेत्रों separetely को बचाने के लिए है, तो आप इसे फिर से प्राप्त कर सकते हैं:

LocalDateTime dt = // your LocalDateTime 
// save time information (hour, minute, seconds, fraction of seconds) 
LocalTime savedTime = dt.toLocalTime(); 
// convert to Date (time information is lost) 
java.sql.Date date = java.sql.Date.valueOf(dt.toLocalDate()); 

// retrieve back the LocalDate (only day/month/year) 
LocalDate localDate = date.toLocalDate(); 
// retrieve the LocalDateTime, with the original time values 
LocalDateTime ldt = localDate.atTime(savedTime); 
+1

यह उत्तर इस प्रश्न +1 का सही उत्तर होना चाहिए। –

0

LocalDateTime से java.sql.Date में कनवर्ट कर रहा - बनाए रखना समय भाग

LocalDateTime dt = // your LocalDateTime 
long epochMillis = dt.atZone(ZoneOffset.UTC).toInstant().toEpochMilli() 
java.sql.Date date = new java.sql.Date(epochMillis); 

java.sql.Date मूल रूप से 1 जनवरी, 1 9 70 00: 00.000 जीएमटी के बाद से मिली मिलीसेकंड के लिए एक रैपर है, इसलिए यह रूपांतरण LocalDateTime से समय क्षेत्र की जानकारी को बनाए रखेगा।