मैं जावा 8 के नए डेटाइम एपीआई के साथ काम करता हूं।
लोकलडेट को इंस्टेंट में कैसे बदलें? मुझे इसके साथ एक अपवाद मिलता है
LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);
और मुझे समझ में क्यों नहीं आता।
मैं जावा 8 के नए डेटाइम एपीआई के साथ काम करता हूं।
लोकलडेट को इंस्टेंट में कैसे बदलें? मुझे इसके साथ एक अपवाद मिलता है
LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);
और मुझे समझ में क्यों नहीं आता।
जवाबों:
Instant
वर्ग समय-रेखा पर एक तात्कालिक बिंदु का प्रतिनिधित्व करता। LocalDate
किसी समय-क्षेत्र की आवश्यकता से रूपांतरण । कुछ अन्य दिनांक और समय पुस्तकालयों के विपरीत, JSR-310 स्वचालित रूप से आपके लिए समय-क्षेत्र का चयन नहीं करेगा, इसलिए आपको इसे प्रदान करना होगा।
LocalDate date = LocalDate.now();
Instant instant = date.atStartOfDay(ZoneId.systemDefault()).toInstant();
यह उदाहरण ZoneId.systemDefault()
रूपांतरण करने के लिए JVM - - के डिफ़ॉल्ट समय-क्षेत्र का उपयोग करता है । संबंधित प्रश्न के लंबे जवाब के लिए यहां देखें ।
अद्यतन: स्वीकृत उत्तर का उपयोग करता है LocalDateTime::toInstant(ZoneOffset)
जो केवल स्वीकार करता है ZoneOffset
। इस उत्तर का उपयोग करता है LocalDate::atStartOfDay(ZoneId)
जो किसी भी स्वीकार करता है ZoneId
। जैसे, यह उत्तर आम तौर पर अधिक उपयोगी है (और शायद स्वीकार किया जाना चाहिए)।
पुनश्च। मैं एपीआई का मुख्य लेखक था
इसे तत्काल में परिवर्तित करने के लिए आपके पास एक LocalDateTime उदाहरण होना चाहिए, जैसे:
LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC)
LocalDate
समय शामिल नहीं है।