LocalDate को SQL Date Java में कैसे बदलें?


96

मैं एक LocalDate को a में कैसे बदलूं java.sql.Date?

प्रयास करें:

Record r = new Record();
LocalDate date = new Date(1967, 06, 22);
r.setDateOfBirth(new Date(date));

यह विफल हो जाता है (संकलन नहीं होगा) और सभी मुझे मिल सकता है जोदा टाइम स्टफ है।

मैं जावा 8 का उपयोग कर रहा हूं



2
@assylias लिंक किए गए प्रश्न पर उत्तर यहां दिए गए लोगों से बेहतर कैसे है? अन्य प्रश्न को इसके डुप्लिकेट के रूप में बंद किया जाना चाहिए, इसके विपरीत नहीं।
मदारा का भूत

1
@SecondRikudo डुप्लिकेट दिखाता है कि LocalDate से Date और विपरीत में कैसे कनवर्ट करें, और इसलिए अधिक सामान्य लगता है।
एसिलियास

जवाबों:


169

उत्तर वास्तव में सरल है;

import java.sql.Date;
...
LocalDate locald = LocalDate.of(1967, 06, 22);
Date date = Date.valueOf(locald); // Magic happens here!
r.setDateOfBirth(date);

यदि आप इसे दूसरे तरीके से बदलना चाहते हैं, तो आप इसे इस तरह से करते हैं:

Date date = r.getDate();
LocalDate localD = date.toLocalDate();

rवह रिकॉर्ड है जो आप JOOQ में उपयोग कर रहे हैं और .getDate()तारीख को आपके रिकॉर्ड से बाहर निकालने की विधि है; मान लीजिए कि आपके पास date_of_birth नामक एक तारीख स्तंभ है, तो आपके प्राप्त विधि को बुलाया जाना चाहिए getDateOfBirth()


4
यह java.time के अनुसार एक "भयानक हैक" है। * लेखक: stackoverflow.com/questions/33066904/…
Dherik

14
आप इस प्रश्न के बारे में java.util.Date नहीं पूछ रहे हैं java.sql.Dateकि यह प्रश्न किस बारे में है।
रत्न अस्त

0

यदि आप वर्तमान तिथि चाहते हैं:

Date date = Date.valueOf(LocalDate.now());

यदि आप एक विशिष्ट तिथि चाहते हैं:

Date date = Date.valueOf(LocalDate.of(1967, 06, 22));

1
यह केवल तभी तेज होता है जब आप वर्तमान क्षण चाहते हैं, यदि आप एक विशिष्ट तिथि चाहते हैं, जैसा कि हो सकता है जब आप किसी के जन्म की तारीख के साथ काम कर रहे हों तो यह बिल्कुल भी काम नहीं करेगा।
जेमटैटिक

हां, यह वर्तमान तिथि सम्मिलित करना है, उदाहरण के लिए जब आप ऑब्जेक्ट बनाते हैं और निर्माण तिथि को जारी रखना चाहते हैं।
रिचर्ड

यह ध्यान रखना महत्वपूर्ण है क्योंकि मूल प्रश्न विशिष्ट तिथि बनाने के बारे में है। यह सभी कॉपी-पास्टर्स के लिए एक नोट है। Date date = Date.valueOf(LocalDate.of(1967, 06, 22));यदि आप इसे "तेज" करना चाहते हैं, तो आप सही उत्तर को ऑनलाइन कर सकते हैं।
जेमटैस्टिक

-1

क्या आपने लोकलडेट के टॉड () पद्धति का उपयोग करने की कोशिश की है?

जैसे की:

Record r = new Record();
LocalDate date = new Date(1967, 06, 22);
r.setDateOfBirth(date.toDate());

सामान्य तौर पर, यह निर्दिष्ट करना एक अच्छा विचार है कि यह केवल "इसे विफल" कहने के बजाय कैसे विफल होता है।


ईमानदार होने के लिए, मैंने केवल अपना उत्तर पोस्ट करने के लिए प्रश्न पोस्ट किया है ताकि आप इसे तब ढूंढ सकें जब आप Google पर हों। मुझे इसे अपने दम पर समझना था क्योंकि गुडल के पास यह सवाल या जवाब नहीं था।
मृत्तक

6
ठीक है, अब आपके पास दो उत्तर हैं, फिर जितना अधिक होगा। मुझे नहीं लगता कि आपके खुद के पोस्ट का जवाब देने में कुछ गलत है।
जूहीस्ट

मुझे उम्मीद है कि यह भविष्य में मेरे स्थान पर किसी की मदद करेगा।
जेमटैटिक

2
ओपी ने लिखा है "[…] सभी मुझे मिल सकता है जोदा समय सामान है। मैं जावा 8 को एकजुट कर रहा हूं। हालाँकि, आपका उत्तर जावा 8 के उत्तर के बजाय सिर्फ अधिक Joda का सामान है।
माइकल पिफेल

1
LocalDate.toDate () केवल LocalDate के Joda संस्करण में मौजूद है, मानक लाइब्रेरी संस्करण में नहीं।
रोद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.