जवाबों:
तुम कर सकते हो:
timeStamp.toLocalDateTime().toLocalDate();
ध्यान दें कि रूपांतरण करने के लिए समय क्षेत्र का
timestamp.toLocalDateTime()
उपयोग किया जाएगाClock.systemDefaultZone()
। यह वही हो सकता है या नहीं हो सकता है जो आप चाहते हैं।
timestamp.toLocalDateTime()
विधि रूपांतरण बनाने के लिए systemDefault टाइम ज़ोन का उपयोग करेगी। यह वही हो सकता है या नहीं हो सकता है जो आप चाहते हैं।
LocalDateTime
हमेशा सिस्टम-डिफ़ॉल्ट टाइमज़ोन का उपयोग करता है। यही इसके नाम में "स्थानीय" का मतलब है।
स्वीकृत उत्तर आदर्श नहीं है, इसलिए मैंने अपने 2 सेंट जोड़ने का फैसला किया
timeStamp.toLocalDateTime().toLocalDate();
सामान्य रूप से एक बुरा समाधान है , मुझे यह भी पता नहीं है कि उन्होंने इस पद्धति को जेडीके में क्यों जोड़ा क्योंकि यह सिस्टम टाइमज़ोन का उपयोग करके एक अंतर्निहित रूपांतरण करके चीजों को वास्तव में भ्रमित करता है। आमतौर पर जब केवल j88 डेट क्लासेस का उपयोग किया जाता है, तो प्रोग्रामर को एक टाइमज़ोन निर्दिष्ट करने के लिए मजबूर किया जाता है जो एक अच्छी बात है।
अच्छा उपाय है
timestamp.toInstant().atZone(zoneId).toLocalDate()
जहां ZoneId वह समयक्षेत्र है जिसका आप उपयोग करना चाहते हैं, जो आमतौर पर या तो ZoneId.systemDefault () है, यदि आप अपने सिस्टम समयक्षेत्र का उपयोग करना चाहते हैं या कुछ हार्डकोड समयक्षेत्र जैसे कि OOffset.UTC
सामान्य दृष्टिकोण होना चाहिए
मैं समय क्षेत्र को ध्यान में रखते हुए @assylias उत्तर का थोड़ा विस्तार करूँगा। विशिष्ट समय क्षेत्र के लिए LocalDateTime प्राप्त करने के लिए कम से कम दो तरीके हैं।
आप पूरे आवेदन के लिए सेटडिफॉल्ट टाइम ज़ोन का उपयोग कर सकते हैं। इसे किसी टाइमस्टैम्प से पहले बुलाया जाना चाहिए -> java.time रूपांतरण:
public static void main(String... args) {
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utcTimeZone);
...
timestamp.toLocalDateTime().toLocalDate();
}
या आप InInstant.atZone श्रृंखला का उपयोग कर सकते हैं:
timestamp.toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate();